WalterLabs Logo
WalterLabs
Kontakt

Zstd statt Gzip: Der versteckte Performance-Booster in Shopware 6

Erwin Walter

Erwin Walter

Performance in Shopware 6

Anleitung: Umstellung von Gzip auf Zstd in Shopware 6

Für eine schnelle Übersicht siehe die offizielle Shopware-Kurz-Doku: „Zstd statt Gzip“.


Cache-Kompression mit Zstandard (zstd) – lohnt sich das?

Wenn dein Shop wächst, wachsen auch die Datenmengen: Produkt- und Kategorieseiten, Einkaufswelten, API-Responses – alles landet im Cache, um Seiten blitzschnell auszuliefern. Shopware komprimiert diese Inhalte standardmäßig mit gzip, was zuverlässig, aber bei großen Mengen vergleichsweise langsam ist.

Seit Shopware 6.6.4.0 kannst du stattdessen Zstandard (zstd)nutzen – ein moderner Algorithmus mit hoher Kompressionsrate und extrem schneller Dekompression. Die Vorteile:

  • Schnellere Dekompression – speicher­intensive Backends (Redis) profitieren.
  • Weniger CPU-Last bei großen Inhalten – ideal bei Lastspitzen.
  • Geringerer I/O durch kompaktere Daten.
  • Einfach per YAML konfigurierbar, sobald zstd installiert ist.

In Projekten konnten wir so die Ladezeit im Schnitt um rund 500 msreduzieren – in Ausreißern bis zu 1–2 Sekunden.


1. Shopware-Konfiguration anpassen

Öffne config/packages/shopware.yaml und ergänze:

shopware:
  cache:
    cache_compression: true
    cache_compression_method: 'zstd'
  cart:
    compress: true
    compression_method: zstd

Hinweis: Viele Hosting-Anbieter stellen die PHP-zstd-Erweiterung auf Anfrage bereits bereit. Dann sind keine weiteren Installationsschritte nötig – du passt nur diese YAML an und leerst den Cache.


2. PHP-zstd-Erweiterung installieren (optional)

Falls dein Hoster zstd nicht liefert, installiere das Dev-Paket und baue das PECL-Modul:

sudo apt-get update && sudo apt-get install -y php-dev
sudo pecl install zstd --with-php-config=$(which php-config)

Füge in deine php.ini ein:

extension="zstd.so"

3. Neustart & Test

Starte PHP-FPM neu und prüfe, ob zstd geladen ist:

sudo service php-fpm restart
php -m | grep zstd

Anschließend alle Caches leeren:

  • bin/console cache:clear
  • redis-cli flushall (falls Redis)
  • php -r 'if (function_exists("opcache_reset")) opcache_reset();'

4. Funktionstest

Erstelle test_zstd.php mit:

<?php
$data = "Test für zstd";
$cmp  = zstd_compress($data);
echo (zstd_uncompress($cmp) === $data)
  ? "Zstd funktioniert!"
  : "Fehler bei zstd";

Und führe es aus:

php test_zstd.php

🔍 Abhängig von PHP- oder Shopware-Version können Details variieren. Ein Blick in die aktuelle Shopware-6-Dokumentationlohnt sich immer.