Shopware Cache leeren
Vorwort
Der Artikel ist sowohl für Server im Supportlevel „Managed" als auch für Unmanaged-Server geeignet.
Shopware speichert beim Betrieb anfallende Daten in einem Cache-Verzeichnis, das nicht automatisch bereinigt wird und schnell viel Speicher belegen kann.
In diesem Hilfecenter-Artikel erklären wir die manuelle Cache-Bereinigung sowie die Einrichtung einer automatisierten Bereinigung.
Voraussetzungen
- Plesk-Server oder App-Server (Cluster-Setup)
- Shopware-Installation
Cache manuell mittels Shopware CLI leeren
Da der Befehl aktiv in die Dateisystemstruktur eingreift, sollte dieser nicht mit dem root Benutzer ausgeführt werden. Der Benutzer root wird dadurch der Besitzer und Gruppen-Besitzer des Cache-Verzeichnisses, wodurch Ihr Shop direkt einen Fehler 500 zurückliefern wird und es zur Downtime kommt.
Bauen Sie eine SSH-Verbindung mit dem entsprechenden Systembenutzer auf Ihrem Server auf und navigieren Sie in das Projekt-Verzeichnis Ihrer Shopware-Installation:
Plesk-Server
cd /var/www/vhosts/<ihre-domain.de>/httpdocs App-Server
cd /var/www/path/to/shopware Anschließend kann der Shopware-Cache mit folgendem Befehl geleert werden:
bin/console cache:clear Der Vorgang kann - je nach Größe des Caches - wenige Sekunden bis mehrere Minuten in Anspruch nehmen.
Automatisierung
Bei produktiven Shops empfehlen wir, die Bereinigung des Caches regelmäßig automatisiert durchzuführen, im Idealfall alle 24 Stunden. Es gibt folgende Möglichkeiten zur Automatisierung:
Cronjob über das creoline Kundencenter
Legen Sie einen neuen Cronjob als Gast-Agent-Befehl an.
Empfohlener Befehl bei Plesk-Server
/var/www/vhosts/<ihre-domain.de>/.phpenv/shims/php /var/www/vhosts/<ihre-domain.de>/httpdocs/bin/console cache:clear Der absolute Pfad /var/www/vhosts/<ihre-domain.de>/.phpenv/shims/php ermöglicht, dass immer die im Plesk Control Panel eingestellte PHP-Version des Abonnements korrekt verwendet wird und der Cronjob bei Anpassung dieser zukünftig nicht nachträglich angepasst werden muss.
Empfohlener Befehl bei App-Server (Cluster-Setup)
/usr/bin/php /var/www/path/to/shopware/bin/console cache:clear Crontab
Alternativ können Cronjobs auf dem Server selbst über den crontab des Servers angelegt werden.
Wir empfehlen dennoch die Nutzung der Cronjob-Funktion über das creoline Kundencenter.
Melden Sie sich als Systembenutzer Ihrer Webseite per SSH an Ihrem Server an und führen Sie folgenden Befehl aus:
crontab -e Beim erstmaligen Bearbeiten des Crontabs mit diesem Benutzer werden Sie nach dem zu verwendenden Editor gefragt. Wir empfehlen nano; die Vorauswahl (meist 1) kann einfach mit Enter bestätigt werden.
Die Syntax für den crontab lautet wie folgt:
┌───────────── Minute (0 - 59)
│ ┌───────────── Stunde (0 - 23)
│ │ ┌───────────── Tag des Monats (1 - 31)
│ │ │ ┌───────────── Monat (1 - 12)
│ │ │ │ ┌───────────── Wochentag (0 - 6)
│ │ │ │ │
* * * * * <Befehl/Skript (absoluter Pfad)> Als Beispiel wird folgender Cronjob jeden Tag, um 00:01 Uhr ausgeführt:
0 1 * * * /usr/bin/php /var/www/vhosts/<Shopware-Domain>/httpdocs/bin/console cache:clear Speichern Sie anschließend den Cronjob (wenn nano, Strg + s) und verlassen Sie den Editor (wenn nano, Strg + x).
Häufige Fehlermeldungen
Fehler 500 nach leeren des Caches
Der Fehler 500 kann nach leeren des Caches auftreten, sofern der Befehl entweder mit dem root Benutzer oder einem alternativen Systembenutzer mit höheren Berechtigungen ausgeführt wurde.
Verifizierung auf Plesk-Server
ls -l /var/www/vhosts/<ihre-domain.de>/httpdocs/var/cache Die Ausgabe sieht wie folgt aus, sofern der bin/console cache:clear Befehl mit dem root Benutzer ausgeführt wurde:
total 16
-rw-r--r-- 1 root root 43 Dec 22 12:58 CACHEDIR.TAG
-rw-r--r-- 1 creoline_demo psacln 118 Dec 22 10:27 opcache-preload.php
drwxr-xr-x 8 creoline_demo psacln 4096 Dec 22 10:27 prod_h6e0ca75dfec54735ecd3e920f4256bc8
drwxr-xr-x 8 root root 4096 Dec 22 14:38 prod_h88fb4bafd76cee9f69dabda96a678a12 Lösung für Plesk-Server
Der Platzhalter <systembenutzer> muss durch den Systembenutzer des zugehörigen Plesk-Abonnements oder des entsprechenden Systembenutzers (App-Server) ersetzt werden:
chown -R <systembenutzer>:psacln /var/www/vhosts/<ihre-domain.de>/httpdocs/var/cache Verifizierung auf Plesk-Server nach der Behebung
ls -l /var/www/vhosts/<ihre-domain.de>/httpdocs/var/cache total 16
-rw-r--r-- 1 creoline_demo creoline_demo 43 Dec 22 12:58 CACHEDIR.TAG
-rw-r--r-- 1 creoline_demo creoline_demo 118 Dec 22 10:27 opcache-preload.php
drwxr-xr-x 8 creoline_demo creoline_demo 4096 Dec 22 10:27 prod_h6e0ca75dfec54735ecd3e920f4256bc8
drwxr-xr-x 8 creoline_demo creoline_demo 4096 Dec 22 14:38 prod_h88fb4bafd76cee9f69dabda96a678a12 Verifizierung auf App-Server (Cluster-Setup)
ls -l /var/www/path/to/shopware/var/cache Die Ausgabe sieht wie folgt aus, sofern der bin/console cache:clear Befehl mit dem root Benutzer ausgeführt wurde:
total 16
-rw-r--r-- 1 root root 43 Dec 22 12:58 CACHEDIR.TAG
-rw-r--r-- 1 deployer deployer 118 Dec 22 10:27 opcache-preload.php
drwxr-xr-x 8 deployer deployer 4096 Dec 22 10:27 prod_h6e0ca75dfec54735ecd3e920f4256bc8
drwxr-xr-x 8 root root 4096 Dec 22 14:38 prod_h88fb4bafd76cee9f69dabda96a678a12 Lösung für App-Server (Cluster-Setup)
chown -R deployer:deployer /var/www/path/to/shopware/var/cache Verifizierung auf App-Server nach der Behebung
ls -l /var/www/path/to/shopware/var/cache total 16
-rw-r--r-- 1 deployer deployer 43 Dec 22 12:58 CACHEDIR.TAG
-rw-r--r-- 1 deployer deployer 118 Dec 22 10:27 opcache-preload.php
drwxr-xr-x 8 deployer deployer 4096 Dec 22 10:27 prod_h6e0ca75dfec54735ecd3e920f4256bc8
drwxr-xr-x 8 deployer deployer 4096 Dec 22 14:38 prod_h88fb4bafd76cee9f69dabda96a678a12