Shopware 5

Shopware 5 - HTTP Cache Warmer

Artikel ist noch WIP, aber zumindest schon mal da. :)

Shopware 5 benötigt häufig um performant zu sein, einen vorhanden HTTP Cache für die jeweilige Seite.
In dem Artikel beschreibe ich die üblichen Strategien sowie persönliche Empfehlungen.

Was ist der HTTP Cache?

Sobald eine Seite eines Shopware Shops aufgerufen wurde, entstand automatisch ein HTTP Cache unter:

var/cache/

Dieser wird erstellt, damit weniger bei einem Seiten Aufruf berechnet werden muss und somit die Performance verbessert wird.

Es ist also vollkommen üblich, dass nachdem der Cache geleert wurde der erste Aufurf einer Seite teilweise deutlich länger benötigt als der zweite.

Sofern nicht manuell geändert, wird bei einer Änderung des z. B. Artikels der Cache invalide und entsprechend neu erstellt.

Was ist der HTTP Cache Warmer?

Der HTTP Cache Warmer kommt in der Regel nachts zum Einsatz und wärmt wenn nicht anders angegeben den kompletten Shop auf. Mit aufwärmen ist gemeint, dass der erste Aufufe jeder Shop-Seite im Hintergrund stattfindet, damit Kunden diese nicht durchführen.

Was sind die Best practice?

Das kommt auf deinen Shop an, insbesondere auf:

• Artikel Anzahl
• Varianten Anzahl
• Plugins
• Performance des Shops ohne Cache
• Zur Verfügungen stehende Ressourcen

Je größer ein Shop, desto länger benötigt der HTTP Cache Warmer.

Seit Shopware 5.4 oder 5.5 ist es möglich, den Warmer deutlich stärker zu konfigurieren:

Usage:
  sw:warm:http:cache [options] [--] [<shopId>]...

Arguments:
  shopId                                           The Id of the shop (deprecated)

Options:
      --shopId[=SHOPID]                            The Id of the shop (multiple Ids -> shopId={1,2}) 
      (multiple values allowed)
  -c, --clear-cache                                Clear complete httpcache before warmup
  -b, --concurrent-requests[=CONCURRENT-REQUESTS]  Integer representing the maximum number of 
  requests that are allowed to be sent concurrently. To many URLs at a time may cause script timeouts, 
  memory issues or block your HTTP server [default: 1]
  -k, --category                                   Warm up categories
  -o, --emotion                                    Warm up emotions
  -g, --blog                                       Warm up blogs
  -m, --manufacturer                               Warm up manufacturers
  -t, --static                                     Warm up static pages
  -p, --product                                    Warm up products
  -d, --variantswitch                              Warm up variant switch of configurators
  -z, --productwithnumber                          Warm up products and variants with number parameter
  -y, --productwithcategory                        Warm up products with category parameter
  -x, --extensions                                 Warm up all URLs provided by other extensions
Kleinern oder sehr performanten Shops

Bei kleineren Shops (<5.000 Artikeln) oder welche die ohne Cache bereits sehr performant sind, kann der HTTP Cache ruhig jede Nacht geleert und wieder aufgewärmt werden.

In diesem keine weiteren Konfigurationen notwendig.

Mittleren oder teil performanten Shops

Auch hier kann der Cache noch jeder Nacht geleert werden.
In diesem Fall sollte jedoch geschaut werden, wie lange denn der HTTP Cache Warmer benötigen würde.
Sollte der Cache Warmer mehr als 2 Stunden benötigen, würde ich damit anfangen auf das Aufwärmen der Varianten zu verzichten. Damit in der Regel der Warmer deutlich reduziert.

Hintergrund ist, dass Varianten in der Regel am seltensten aufgerufen werden aber am umfangreichsten vorhanden sind.
Das Verhältnis Aufruf zur Masse ist hier schlicht am deutlichsten zu schlecht.

Konfiguration könnte wie folgt aussehen:

Größeren oder gering performanten Shops

Bei solchen Setups rate ich davon ab, jeden Tag den Cache neu aufzuwärmen.
Hier sollte es am ehesten selten passieren und auf jeden Fall dann, wenn wenig los ist.

Die Setups sollten sich aber auf jeden Fall auch individuell angeschaut werden.

Zur Verfügungen stehende Ressourcen?

Standardmäßig wird der Cache URL nach URL aufgewärmt.
Es ist jedoch möglich, dass mehere URLs zeitgleich aufgewärmt werden.

Wie viele parallel laufen hängt ganz von Ihrem Server ab und muss immer individuell mit Ihrem Shop getestet werden.

Hinweis:
Bei dieser Funktion wird immer im Block gearbeitet. Es kann also sein, dass bei 10 URLs 9 bereits aufgewärmt wurde, die 10te jedoch länger braucht wodurch alles verlängert wird.

Cache Leeren

Das Leeren des Caches sollte wenn möglich. niemals tagsüber stattfinden.
Es ist nicht unüblich (insbesondere bei höher fre­quen­tie­ren oder anspruchsvolleren Shops), nach einem Cache Leeren Vorgang der Shop temporär nicht erreichbar ist.
Der Server wird dabei teilweise enormen Last ausgesetzt, da GB an Daten gelöscht werden, das Template generiert werden muss sowie alle vorhanden Besucher aufrufenden Seiten ohne Cache ausgeliefert werden muss, was entsprechend CPU Leistung kostet.


Dokumenation:
  ▹ https://docs.shopware.com/de/shopware-5-de/einstellungen/cache-performance-modul
  ▹ https://developers.shopware.com/developers-guide/http-cache/
 ▹ https://docs.shopware.com/de/shopware-5-de/einstellungen/system-cronjobs#http-cache-aufwaermen