Markus Greulich
von Markus Greulich

Magento Varnish Crawler

So cachen wir 3000 Seiten ohne Ausfallzeit

Wir haben ein Magento Multi-Shopsystem bestehend aus 3 Shops für Varnish optimiert und das Crawling von über 3000 Seiten in unter 30 Minuten ermöglicht. In unserer Case Study erklären wir wie.

Ausgangssituation:

In unserem Referenzprojekt war eine gängige Varnish Installation eines professionellen Magento-Hoster im Einsatz. Diese bietet ein normales Full-Page Caching, jedoch nur so lange bis der Kunde etwas in den Warenkorb legt oder die Seite anderweitig personalisiert wird. Danach werden ungecachte Inhalte mit höheren Ladezeiten ausgeliefert.

Aufgrund fehlender Crawler oder Warmup Skripte ist die Auslieferung nach Löschung des Varnish Caches (durch Designänderungen, Preisupdates, o.ä.) sehr verzögert. In der Regel bekommt der erste Besucher einer URL diese entsprechend langsam ausgeliefert. Bei Onlineshops mit mehreren 1000 Produkten wird das schnell zu einem großen Problem. Ein unoptimiertes Varnish-Caching führt also schnell zu Ernüchterung.

Lösung: ESI Erweiterung mit optimiertem Crawler

Im Rahmen des Relaunches wurde ein erweitertes Caching eingebaut. Durch die Verwendung personalisierter Blöcke & ESI kann ein personalisierter Warenkorb in einer vollständig gecachten Seite genutzt werden. Im zweiten Schritt haben wir eine Lösung erarbeitet um die umfangreiche Seitenstruktur im Cache aktuell zu halten. Aufgrund der vielen URLs stürzte der verfügbare Standard-Crawler oft ab und war auch aufgrund der fehlerhaften Storeview Berücksichtigung nicht für unsere Anforderungen geeignet.

Nachdem die Sammelfunktion umgeschrieben wurde, dauerte ein Cache-Crawl bei ungecachten Seiten noch immer 3 Stunden. Mit dem Welance Crawler haben wir ein Tool entwickelt, welches die zu URL-Liste deutlich schneller und ressourcenschonend ausliest, indem wir doppelte URLs und unnötige Schreibweisen verhindern. Durch einen entwickelten Storefilter kann exakt eingestellt werden welche Shops indiziert werden sollen.

Eine weitere Besonderheit unseres Moduls ist die Möglichkeit Parameter und Filter automatisert zu cachen. Wenn der Kunde also nach einer bestimmten Farbe filtert, bekommt er die Liste äußerst schnell ausgeliefert - diese crawling Funktion haben wir bei anderen Modulen vermisst.

Ergebnis: Effizientes Crawling ohne Ausfallzeiten

Bei den uns bisher bekannten Cache/Crawling Lösungen wurde zuerst der Cache geleert bevor das Crawling begann. Das bedeutet bei einem größeren Shop, dass ab diesem Moment ALLE Seiten ungecached und langsam sind, bis sie sequenziell gecached werden.

Im Welance Crawler haben wir für diesen Fall ein refresh-feature eingebaut. Hier werden nicht einfach alle Seiten aus dem Cache geworfen und dann durchlaufen, sondern jede einzelne Seite wird kurz vor dem Aufruf durch den Crawler gelöscht. So wird jede Seite nur für extrem kurze Zeit (solange es dauert bis sie generiert wurde) potentiell für den User langsam, der Rest des Shops ist jederzeit vollständig im Cache. Durch eine Cache Lebensdauer von 25 Stunden und einem refresh aller 24 Stunden sind die Seiten nie veraltet und immer verfügbar.

Durch parallele refresh Aufrufe werden über 3000 Seiten der Stores in etwa 30 Minuten geupdatet, ohne dass der User im Live-Betrieb etwas bemerkt.

Die Möglichkeit einzelne Dateien, URL’s oder Pattern aus dem Cache zu löschen eröffnet eine zusätzliche Flexiblität. So löscht man mit „jacken.html“ zum Beispiel die URLs „/winter/jacken.html“ sowie „/sommer/jacken.html“ aus dem cache. Das funktioniert auch mit CSS oder sonstigen Dateien. Auch ganze Kategorien lassen sich so aus dem Cache entfernen.
 

Fazit:

Wir haben eine ideale Kombination aus vollständig gecachten Seiten und einer automatisierten Befüllung erreicht. Durch zusätzliche Flexibilität können auch nur einzelne Seiten oder Dateien schnell geupdatet werden. Die Performance des Shops hat sich deutlich gesteigert, was sich auch in höheren Conversion Rates zeigt. Wenn Sie unser Crawling Modul nutzen möchten oder eine Varnish-Beratung wünschen. Wir stehen Ihnen jederzeit für Anfragen unter zur varnish@welance.de Verfügung.

Das Magento Modul (ab Community Version 1.6) können Sie auch in unserem Onlineshop kaufen. Klicken Sie auf die Grafik um den Magento Varnish Crawler in den Warenkorb zu legen:

 

 Welance Mage Crawler Extension