Der Cache ist ein Zwischenspeicher für Datenbankabfragen, Template-Dateien sowie Textblöcke und dient der Performancesteigerung. Daten die im Shopcache zwischengespeichert werden erfordern keine erneute Abfrage in der Datenbank.
Das zentrale "Caches / Performance"-Modul findest Du direkt unter dem Punkt "Einstellungen" in Deinem Backend. Dieses ist aufgeteilt in drei Bereiche:
Mit Shopware 5 wurde das Caching vereinfacht. Das gesamte /cache Verzeichnis muss nun komplett beschreibbar sein, da Shopware pro Revision einen separaten Cache-Ordner anlegt und diesen verwendet. Das bedeutet, dass beim Update automatisch ein neuer Ordner angelegt und genutzt wird. Cache leeren nach dem Update gehört somit der Vergangenheit an. Ebenso hat das Staging-System nun ein separates Cache Verzeichnis, ebenso pro Revision.
Der Start-Tab dient dazu, den Cache Modus zu definieren
Hier werden Dir serverseitige Optimierungsmaßnahmen angezeigt.
Bitte beachte, dass es sich hierbei nur um Vorschläge für optionale Optimierungsmaßnahmen handelt. Fehlende optionale Einstellungen haben keinerlei Auswirkung auf die Funktionsfähigkeit von Shopware.
Der HTTP-Cache ist standardmäßig enthalten. Um diesen nutzen zu können, muss er lediglich über das Backend aktiviert werden.
Cache Warmer
Über den Cache Warmer kann der HTTP-Cache komplett aufgewärmt werden. Damit werden, vereinfacht ausgedrückt, alle Seiten des Shops einmal aufgerufen und damit in den Cache geladen. Würde das nicht über den Cache Warmer passieren, würde sich der Cache beim Besuch eines Benutzers aufbauen und dann in einer erheblich längeren Ladezeit resultieren. Um den Benutzer diese Wartezeit zu ersparen, kannst du den Cache selbst aufwärmen.
Sofern der HTTP-Cache aktiv ist, kannst du ihn über den blauen Button "Cache aufwärmen" aufwärmen, also füllen. Klicke auf den Button und wähle im sich öffnenden Popup den gewünschten Shop aus und klicke auf "Vorgang starten". Der Cache wird dann aufgewärmt.
Stapelgröße: Das sind die Anzahl der Aufrufe, die vom Server abgearbeitet werden.
Parallelität: Wähle hier aus, wie viele Prozesse parallel am Cache-Warmup arbeiten sollen. Je nach Server können mehr oder auch weniger parallele Prozesse sinnig sein, teste hier einfach, welche Einstellung die schnellsten Ergebnisse liefert.
Erweiterte Einstellungen: Hier kannst du festlegen, welche Seiten deines Shops aufgewärmt werden sollen. Mit einem Klick auf "Als Standard speichern" speicherst du die aktuelle Konfiguration für zukünftige Ausführungen.
HTTP-Cache aktivieren und konfigurieren
Klicke als erstes im Backend-Menü auf Einstellungen > Caches / Performance und wechsle dann in den Reiter Einstellungen. Dort findest Du den Menüpunkt HTTP-Cache.
Durch aktivieren der Checkbox HTTP-Cache aktivieren wird dieser aktiviert und ab diesem Zeitpunkt jeglicher Cache über das Plugin abgewickelt.
Als Konfigurationsoptionen stehen Dir hier die automatische Cache-Invalidierung, Alternative Proxy URL und die Admin-Ansicht zur Verfügung:
Die automatische Cache-Invalidierung bewirkt, dass der Cache der Artikeldetailseite beim Ändern des Artikels zerstört wird, sodass er beim nächsten Aufruf wieder neu aufgebaut wird. In der Praxis äußert sich dies so, dass zB Änderungen der Produktbeschreibung nicht erst die Caching-Zeit durchlaufen muss und erst dann aktualisiert wird, sondern die Änderung direkt nach dem Speichern im Frontend umgesetzt wird.
Die alternative Proxy URL gibt Dir die Möglichkeit, einen gewünschten Proxy auszuwählen, falls Du zB. mit Varnish arbeitest.
Unter der Admin-Ansicht verbirgt sich die Option, dass Artikeldetailseiten grundsätzlich nicht mehr gecached werden, werden diese aus dem Backend heraus geöffnet (zB. über Das Kundenmodul > Kunde öffnen > Bestellung durchführen)
Definition der Cache-Zeiten:
Hier kannst Du die Cache-Zeiten des Shops selbst festlegen. Die Angaben werden hier immer in Sekunden eingetragen und geben an, wie lange ein Controller im Cache gehalten wird. ist diese Zeit abgelaufen, wird der Cache für diesen Controller beim nächsten Seitenaufruf neu generiert und abgelegt.
Gleiches gilt umgekehrt für die nicht gecachten Controller Tags. Hier werden einzelne Bereiche der Seite nicht gecached, wie im Screenshot die Preise auf der Artikeldetailseite und im Listing
Bei Definition der Controller (- Aktionen) Cache Zeiten solltest du lediglich Cotroller eingeben bei denen es Sinnvoll ist diese zu Cache, wie z.B. das Listing. Sinnvoll sind Controller an denen im Normalfall über eine etwas längere Zeit keine Änderungen durchgeführt werden und diese dann durch das Caching schneller geladen werden können.
Bei Nicht gecachte Crontroller Tags steuerst du, wann eine gecachte Controller(-Aktion), die oben definiert ist, nicht mehr gecacht werden soll. Hier kannst du mit verschiedenen Tags arbeiten (slt = kunde hat den "eingeloggt bleiben" status, "checkout" => der kunde hat produkte im checkout, etc.) Die Tags kannst du innerhalb einer Session finden, z.B.ist im Standard die Startseite mit dem Tag "price" geflaggt. Folgende Tags stehen zur Auswahl:
slt = Kunde ist eingeloggt
checkout = Kunde hat Artikel in den Warenkorb gelegt
Compare = Kunde hat einen Artikel im Vergleich
Genauere Informationen und tiefgreifendere informationen erhältst Du in unserer Developer Dokumentation zum HTTP-Cache.
Bitte beachte, dass der HTTP-Cache nicht mit der Blätterfunktion auf der Artikeldetailseite kompatibel ist. Solltest Du also das Kategorie-Listing nach Preis sortiert haben und den ersten Artikel anklicken, wird in der Detailansicht wieder nach Einstelldatum sortiert.
Über diesen Menüpunkt kann der Theme Cache neu aufgebaut werden. Bitte beachte, dass nach Aufbauen des Theme-Caches der HTTP-Cache komplett geleert wird.
An dieser Stelle kann die Aktualisierungsstrategie der suchmaschinenfreundlichen URLs definiert werden. Die Standardeinstellung ist Live. Hierbei werden die URLs dynamisch nach Ablauf des Caching-Intervalls geprüft und neue hinzugefügt. Der Ablauf ist hier identisch zu Shopware Versionen < 4.1. Als Strategie gibt es zudem Manuell und Cronjob. Die automatische Generierung von SEO-URLs ist bei diesen Einstellungen deaktiviert. Die URLs werden ausschließlich per Cronjob aktualisiert (z.B. nachts) oder manuell. Die manuelle Ausführung/Aktualisierung wird über den Button darüber angestoßen. Die URLs können dann per Stapelverarbeitung für den gewünschten Shop komplett abgearbeitet werden.
An dieser Stelle kann die Aktualisierungsstrategie des Suchindexes definiert werden. Die Standardeinstellung ist Live. Hierbei wird der Suchindex nach Ablauf der hinterlegten Intervalls neu erstellt (durch Aufruf der Suche im Frontend). Der Ablauf ist hier identisch zu Shopware Versionen < 4.1. Als Strategie gibt es zudem Manuell und Cronjob. Die automatische Generierung des Suchindexes ist bei diesen Einstellungen deaktiviert. Der Suchindex wird ausschließlich per Cronjob aktualisiert (z.B. nachts) oder manuell. Die manuelle Ausführung/Aktualisierung wird über den Button darüber angestoßen.
Der Listing Modus ist über eine Drop-Down-Liste auswählbar:
Im Standard ist hier die erste Option "Filterbutton anzeigen" aktiv.
Lege hier fest, wie und wann die Sitemap generiert werden soll. Über die Cache-Zeit kannst Du definieren, dass die Sitemap nicht zu häufig (z.B. bei jedem Aufruf) neu generiert wird. Die Zeitangabe erfolgt in Sekunden.
(1) Füge benutzerdefinierte URLs hinzu. Sobald Du eine individuelle URL hinzufügst, kannst Du diese bei Bedarf priorisieren. Außerdem kannst Du auch die Änderungshäufigkeit einzelner URLs bestimmen. Nie, Stündlich, Täglich, Wöchentlich, Monatlich, Jährlich oder Nie sind die Auswahlmöglichkeiten. Zuletzt kannst Du den URLs noch den Shop zuweisen.
(2) Du kannst ebenfalls URLs von der Sitemap ausschließen. Wähle hier zunächst die Entität, aus welcher Du URLs ausschließen willst und im Anschluss den passenden Identifier. Möchtest Du beispielsweise eine bestimme Artikel-URL ausschließen, wählst Du als Entität "Produkte" und als Identifier den entsprechenden Artikel.