Wer sich bereits weiterführend mit den Möglichkeiten des Cronjob in Shopware beschäftigt hat, wird feststellen, dass es für das Aufwärmen des Shopware-Cache keine eigene direkt im Standard integrierte Funktion gibt, welche automatisiert und regelmäßig den Cache aufwärmt. Zwar gibt es im Shopware-Backend Möglichkeiten den Cronjob regelmäßig zu leeren, aber nicht diesen neu zu erstellen. Und auch für das automatische Leeren des Cache und weiteren Cronjob Funktionen ist es erforderlich einen eigenen Cronjob im Server-Hosting anzulegen.

Über einen zusätzlichen Cronjob, welcher direkt im Hosting eingerichtet werden kann, lässt sich so die Möglichkeit des “cache warmup” realisieren.

Was ist der Shopware Cache?

Shopbetreiber, welche ihren Onlineshop selbst betreiben und gegebenenfalls auch nur ein kleines Produktsortiment haben, werden bei der Geschwindigkeit des Onlineshops oft keine großen Anforderungen haben und gegebenenfalls gar nicht bemerken, dass die weiterführenden Einrichtungen für einen Cronjob zum Aufwärmen des Cache im Standard nicht aktiv eingerichtet sind. Dies stellt solange kein Problem dar, wenn die Besucherzahlen verhältnismäßig niedrig sind und der Shop quasi einfach so “nebenher” läuft.

Shopware Backend Cache aufwärmen kleine Ansicht

Vereinfacht beschrieben, speichert Shopware jede einzelne Seite in vielen kleinen einzelnen Dateien zwischen, damit der Aufruf der Seiten möglichst schnell erfolgt und die Kunden dadurch nicht unnötig lange warten müssen. Zwar handelt es sich hier oftmals nur um ein paar Millisekunden, doch bei größeren Produktsortimenten, eingerichteten Filtern, mehrfachen Artikelbildern pro Produkt, vielen gleichzeitigen Besuchern und vielem mehr kann die Antwortzeit des Servers ohne einen korrekt eingerichteten Cache auch mal etwas länger dauern. Insbesondere wenn man als Besucher in einem vielfältigen Produktsortiment am Recherchieren ist, geht insgesamt bei den einzelnen Seitenaufrufen zusammengefasst einiges an Zeit verloren und kann auch unterbewusst zu einer entsprechenden Abneigung führen.

Für den Besucher sollte deshalb möglichst immer ein schneller Seitenaufbau gewährleistet werden, damit dieser zügig durch das Produktsortiment stöbern kann und insbesondere bei einem beabsichtigten Kauf von Artikeln nicht durch langsame Seiten behindert wird.

Shopware Cache regelmäßig automatisch “aufwärmen”

Wer also sicherstellen möchte, dass der Cache in Shopware regelmäßig und automatisch erstellt wird, kann über einen eigenen Cronjob im Hosting – sofern das eigene Hosting dies ermöglicht – den Cache regelmäßig zu vorgegebenen Zeiten “aufwärmen”. Somit ist sichergestellt, dass der Seitenaufbau immer sehr zügig und effizient für die Besucher erfolgt und damit auch ein nicht unerheblicher Anteil der positiven Usability und gesteigerten Conversion sichergestellt ist.

Zwar baut sich der Cache auch durch die regelmäßigen Besucher auf, welche auf die Seiten klicken. Doch damit laden nur die häufiger besuchten Seiten deutlich zügiger. Die Seiten, welche selten oder zum ersten Mal besucht werden, bleiben hier außen vor.

Wer aufbaut muss auch aufräumen

Wer allerdings nur den Cache aufbaut, diesen aber nicht auch regelmäßig auch wieder leert, kann in technischer Hinsicht Probleme bekommen. So gibt es in den Shopware Grundeinstellungen bei den Cronjobs auch eine Funktion diesen zu leeren, damit dieser wieder sauber aufgebaut werden kann. In seltenen Fällen führt ein regelmäßig aufgebauter aber nicht gelehrter Cache zu fehlerhaften Verweisen auf der Webseite und im schlimmsten Fall zu Fehlfunktionen und Ausfällen.

Darüber hinaus ist es auch bei Installationen und Konfigurationen von neuen Plugins oder Änderungen anderen Einkaufswelten, den Kategorien und Artikelstammdaten erforderlich nach den durchgeführten Änderungen den Cache manuell im Backend zu leeren.

Shopware Backend Cronjob Cache löschen

Im dargestellten Beispiel wird der Cache immer täglich zur gleichen Zeit nachts um 0:30 Uhr gelöscht. Wie weiter unten im Text zu erkennen ist, erfolgt der Aufbau des Cache dann am frühen Morgen um 6:00 Uhr.

Skript für Cronjob “Cache aufwärmen” im Hosting

Am Beispiel von Profihost gibt es das folgende Skript welches im Hautverzeichnis oder einem Unterordner des Hostings abgelegt werden kann. Dieses wird dann durch den eingerichteten Cronjob im Hosting immer zu einer festgelegten Zeit ausgeführt. Im toten wenig aktiven Forum von Profihost konnte ich leider keine weiteren Hinweise finden. Deshalb auch dieser Blogbeitrag.

Man legt hierbei eine zusätzliche Datei (z.B. mit dem Namen cache-warmup.sh) mit folgenden Angaben an:

#!/bin/bash

/usr/local/php7.0/bin/php -z /usr/local/php_extensions/php7.0/ioncube.so ~/www.domain.de/bin/console sw:warm:http:cache

Den Platzhalter www.domain.de muss man im Hosting (z.B. bei Profihost) natürlich durch die eigene Domain ersetzen. Hierbei ist auch darauf zu achten, dass die Datei für den Cronjob Ausführungsrechte für den Server besitzt (chmod 755). Das Skript ist hier am Beispiel von php 7.0 dargestellt. Ebenfalls kann es bezüglich der Pfadangaben im Skript je nach Hoster Unterschiede geben.

Dann richtet man den Cronjob ein und definiert, ob bei der Ausführung eine E-Mail bei Fehlern versendet werden soll und zu welchem Zeitpunkt der Cronjob ausgeführt werden soll.

Profihost Cronjob Shopware Cache aufwärmen

An dem gezeigten Beispiel erkennt man die leider noch etwas veraltete Oberfläche von Profihost. Aber sie funktioniert und bietet alle technischen Möglichkeiten, um die wichtigsten Dinge im Hosting zu konfigurieren. Das gezeigte Beispiel zeigt die Ausführung des Shell-Script für den Grundjob täglich um 6:00 Uhr morgens.

Fazit

Das Aufwärmen des Cache ist nur eine von mehreren Möglichkeiten, die Geschwindigkeit und Effizienz des Onlineshops zu erhöhen und sollte nur ein Teil der konsequent umgesetzten Maßnahmen in einer gesamtheitlichen Kombination sein. Ein wichtiger Standard, welcher in jedem guten Hosting ebenfalls vorhanden und eingesetzt werden sollte ist die Verwendung von php 7.0, eine Erweiterung des “memory limit” auf mindestens 512 MB und eine Erweiterung der “max execution time” von den meist standardmäßig vorhandenen 30 Sekunden auf bis zu 600 Sekunden (10 Minuten). Letzteres gilt insbesondere auch für die Anwender von Magnalister. Zusätzlich bringt mod_pagespeed ebenfalls einen erheblichen Geschwindigkeitsvorteil. Dieser wird aber von Shopware nicht offiziell empfohlen. Für die einwandfreie Verwendung sind noch kleinere Anpassungen erforderlich, da sonst der TinyMCE Editor im Backend nicht mehr funktioniert.

Durch das regelmäßige Aufwärmen des Cache ist sichergestellt dass möglichst alle Unterseiten und Artikeldetailseiten durch die Besucher schnell und effizient aufgerufen werden können. Das Aufwärmen des Cache beschleunigt somit alle relevanten Bereiche des Onlineshops deutlich und führte zu einer erhöhten Akzeptanz bei den Kunden, da der Seitenaufbau schnell und ohne große Wartezeiten erfolgt.