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 nanoStrg + 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