Shopware HTTP Cache Performance vs. Artikelpflege über die API

27. Februar 2018
3 Minuten, 13 Sekunden
Shopware HTTP Cache Performance vs. Artikelpflege über die API

Zitat des Kunden: "Hilfe, unsere Ladezeiten sind unterirdisch und wir erhalten regelmäßig 503er Fehlermeldung! Was habt ihr gemacht? So verkaufen wir keinen einzigen Artikel ..."

Analyse der Ladezeiten

Zunächst folgte eine umgehende Analyse der Ladezeiten mittels Google Chrome DevTools. Es fehlten jedoch sämtliche Vergleichswerte der vorhergehenden Woche.

Jaja, kein Performance Monitoring ... jetzt schon!

Wasserfall - Ladezeit lokale Ressourcen

Da die Inhalte von der eigentlichen Domain in etwa 1,5 Sekunden geladen werden konnten, bietet sich ein Fingerpointing in Richtung externer Ressourcen an, welche die Ladezeit insgesamt auf > 6 Sekunden verzögeren.

Wasserfall - Ladezeit externe Ressourcen

Analyse der Antwortzeiten

Dazu noch schnell ein Blick auf die Antwortzeit des Webservers (TTFB), um ganz sicher gehen zu können, dass wir bei den aufgerufenen Ressourcen nicht auf die Abarbeitung des jeweiligen PHP Prozesses warten!

Quatsch, wieso denn auch, wir nutzen ja schließlich den Shopware HTTP Cache.

Time TO First Byte - Antwortzeiten

Analyse der Response Header

Passt! Dann schauen wir uns doch noch schnell den Response Header an und stellen sicher, dass wir hier die erwarteten Cache Hits erhalten.

Shopware HTTP Cache Miss
Oops!! Entgegen der Erwartung erhalten wir keinen Cache Hit und bitten einen Kollegen, das Ganze ebenfalls mit seinem Browser einmal durchzuspielen.

Dort funktioniert natürlich zunächst Alles wie gewünscht, sodass wir kein Stück weiter sind ...

Eine weitere Schleife bringt dann Klarheit und es stellt sich heraus, dass der HTTP Cache zwar grundsätzlich funktioniert, die Objekte jedoch nur für recht kurze Zeit (wenige Sekunden) im Cache verweilen ... komisch!

Shopware HTTP Cache Hit

Wer kennt das nicht, es gibt immer wieder Kunden, die den ganzen Tag fleißig im Backend an den CMS Seiten arbeiten und zur Sicherheit andauernd den Cache leeren ... also haben wir den Kunden gebeten, den Cache nicht zu leeren.

Nochmal auf Anfang

F: Warum ist die TTFB und die Auslastung des Systems durchgängig so hoch?
A: Weil die Seiten nur für kurze Zeit im HTTP Cache liegen!
F: Warum liegen sie nur für kurze Zeit im Cache?
A: Weil jemand den Cache leert, richtig!

Aber nun ist keiner mehr da, der auf den Knopf drückt.

Analyse der Webserver Logs

Eine Prüfung der Logfiles liefert eine erste Spur und zeigt neben ein paar regulären Aufrufen des Shop Frontend eine durchschnittlich hohe Anzahl von Aufrufen der Shopware API zur Artikelpflege.

Shopware HTTP Cache Einstellungen

Wir prüfen also noch einmal die Einstellungen bzgl. des Shopware HTTP Cache und werden auf die Option "Automatische Cache-Invalidierung" aufmerksam, welche im Standard aktiviert ist.

Der Hilfetext dieser Option schafft etwas mehr Klarheit mit den Worten "Artikel-URLs werden bei Änderungen über einen BAN Request invalidiert".

Shopware HTTP Cache Einstellungen

Nun wird ein Schuh draus! Mit etwas über 100 Aufrufen der Shopware API pro Minute liegt die Lebensdauer für ein Cache Objekt in der Regel nur bei wenigen Sekunden.

Anders ausgedrückt geht die Effizienz des Shopware HTTP Cache eher gegen Null.

Die Folge ist somit, dass die jeweilige Seite bei der nächsten Anfrage erst wieder komplett berechnet werden muss, wodurch sich der fortlaufend hohe Bedarf der Systemressourcen (CPU, RAM, DiskIO) erklärt.

Die Antwortzeit (TTFB) zeigt sich erneut mit nicht akzeptablen Werten und die Erwartung des Besuchers wird massiv enttäuscht.

Der Kunde hat recht: "So verkaufen wir keinen einzigen Artikel!"

Zum Vergleich wird die Einstellung also zunächst deaktiviert und die Caching Quote erneut geprüft. Nach etwa 30 Minuten lässt sich ein deutlicher Anstieg der Effizienz des Shopware HTTP Cache sowie ein wesentlich geringer Bedarf der Ressourcen erkennen.

Die Ladezeiten liegen nun konstant unter einer Sekunde.

Uptrends Monitoring der Ladezeiten

Problem gelöst? Leider nein!

Durch die Änderung der Einstellungen bzgl. des Invalidieren der Cache Objekte sind Änderungen an den Artikeldaten (Preis, Verfügbarkeit) nun nicht mehr sofort im Frontend verfügbar.

Der Shopware HTTP Cache muss nun manuell aktualisiert werden und es entstehen zusätzliche Lastspitzen bzw. zusätzlicher Ressourcenbedarf.

Unser Lösungsansatz

Zur Lösung des Problems haben wir den Ansatz gewählt, die Aufrufe der Shopware API zunächst in einer Tabelle zu speichern und das direkte Invalidieren des HTTP Cache zu unterbinden.

Die Aufrufe der API können so aggregiert verarbeitet und die betroffenen Cache Objekte gezielt neu aufgebaut werden.

Mehr aus unserem Blog

Branchenführer setzt auf Shopware Enterprise
30. Januar 2020

Wachstum im Online-Handel gelingt nur mit einem kompromisslos zuverlässigen Shop-System: die Erfolgsgeschichte von all4golf, Europas größtem…

Mehr erfahren
Fact-Finder Plugin für Shopware 5
27. September 2016

FACT-Finder bietet eine hervorragende Suchmaschine für Online-Shops und stellt mit über 1500 Installationen Europas Marktführer für die Onsi…

Mehr erfahren
Shopware 6: Theme-Entwicklung
17. Januar 2020

Im vorherigen Artikel “Shopware 6: Erster Überblick und Installation” haben wir uns einen Überblick über Shopware 6 verschafft und gelernt, …

Mehr erfahren
Shopware Partnerschaft & Zertifizeirung
20. Oktober 2015

Wir haben unsere Expertise für das Shopsystem Shopware weiter ausgebaut und verfügen nun über mehrere ‚Certified Template Engineers‘ und ‚Ce…

Mehr erfahren
Shopware 6: Erster Überblick und Installation
6. Januar 2020

Seit Januar 2020 ist Shopware 6.1 als Stable Version verfügbar. Die neue Version bringt dabei nicht nur neue Features mit, sondern stellt ei…

Mehr erfahren
Magento Live 2019 in Amsterdam
30. Oktober 2019

Vom 21. bis 23. Oktober haben unsere Entwickler Anna und Nico die MagentoLive Europe in Amsterdam besucht. Vor Ort haben sie sich mit der in…

Mehr erfahren
Der Start in die Entwickler-Karriere: Praktikum bei der digital.manufaktur
2. Februar 2020

Marc und Michel sind Studenten der Medieninformatik und Mediendesigninformatik. In den letzten vier Monaten haben sie die digital.manufaktur…

Mehr erfahren
Zertifiziert! Die digital.manufaktur ist bereit für Shopware 6.
21. Januar 2020

Unsere Kollegin Zita hat im Januar 2020 das Zertifikat “Shopware 6 Certified Developer” von der Shopware Academy erhalten. Im Interview erzä…

Mehr erfahren

Hallo, mein Name ist Anika.

Wenn Sie Fragen haben, melden Sie sich gerne bei uns.

+49 511 - 76 38 44 90 hallo@digitalmanufaktur.com

1