Skip to content

Cache

Das CMS hat zwei Cache-Ebenen: komprimierte statische Assets (kompiliertes CSS und JavaScript) und den API-Response-Cache (JSON-Responses aus dem APCu-Speicher). Beide werden unter Einstellungen → Cache verwaltet.

Cache-Einstellungen mit Cache-aktivieren-Toggle, TTL-Feld und zwei Aktions-Buttons

1. Der Response-Cache

Der Response-Cache speichert JSON-Responses aus GET-Requests im APCu-Speicher. Der naechste identische Request liefert in Mikrosekunden aus dem Speicher — keine DB, kein PHP-Code, kein Session-Touch.

Konfiguration

FeldZweck
Cache aktivierenHaupt-Schalter. Haken entfernen, um den Response-Cache ganz abzuschalten.
Cache-Timeout in SekundenTTL fuer Eintraege. Typisch: 300 (5 Min), 3600 (1 h).

Klick Speichern. Aenderungen greifen beim naechsten Request.

Was gecacht wird

Cache-Hit-Bedingungen (alle muessen zutreffen):

  • Methode ist GET.
  • Keine User-Session aktiv ($_SESSION['userid'] leer).
  • Keine Backend-Session aktiv.
  • Kein X-Api-Key-Header.
  • TTL > 0.
  • Endpunkt nicht in Ausschluss-Liste (siehe unten).

Responses tragen einen X-Cache-Header, der dir sagt, was passiert ist:

  • X-Cache: HIT — aus dem Speicher geliefert.
  • X-Cache: MISS — frisch berechnet, im Speicher abgelegt.
  • Kein Header — nicht cache-faehig (Session vorhanden, POST, Backend-Endpunkt oder ausgeschlossen).

Was nie gecacht wird

  • Alle backend/*-Endpunkte (hartkodiert).
  • Authentifizierte Requests (jede Session).
  • API-Schluessel-Requests (pro Schluessel gezaehlt, geteilter Cache lohnt sich nicht).
  • POST, PATCH, DELETE.
  • Endpunkte in der Ausschluss-Konfiguration.

Die Ausschluss-Liste liegt in _public/extensions/core/backend/cache_settings/config/cache_exclude_endpoints.json. Prefix-Match gegen den Request-Pfad. Typisch: shop/cart, auth, checkout.

2. Cache leeren

Der Button Cache leeren entleert alle APCu-Cache-Eintraege — Response-Cache, Rate-Limit-Buckets, gecachete Ausschluss-Lookups. Nutz ihn nach:

  • Massenhaften Content-Aenderungen (Massen-Import, Deploy).
  • Editieren von Laufzeit-Uebersetzungen.
  • Aenderungen an der Ausschluss-Konfiguration.
  • Jedes Mal, wenn das Frontend veraltete Daten zeigt.

Klick den Button. Ein Erfolgs-Banner bestaetigt.

Cache-Clear betrifft auch Rate-Limits

APCu haelt mehr als Responses — auch die Rate-Limit-Tokens. Ein Clear setzt jeden Bucket zurueck, ein laufender DoS bekommt frisches Budget. Auf Produktion besser gezielte Invalidation (z.B. PHP-FPM-Restart im Wartungsfenster).

3. CSS und JS komprimieren

Der Button JS und CSS komprimieren laeuft die Asset-Pipeline:

  • Konkateniert und minifiziert jede LESS-Datei, die zu Frontend-CSS kompiliert.
  • Buendelt JavaScript.
  • Regeneriert das Custom-CSS fuer Pagebuilder-Abstaende, -Flex und -Custom-CSS-Felder.
  • Kompiliert das Custom-LESS aus Design-Tokens (siehe Design-Tokens).

Lauf ihn nach:

  • Aenderungen an Design-Tokens in Einstellungen → Design.
  • Deployment eines neuen Themes.
  • Direktem LESS-Editieren auf dem Server.

Die komprimierten Outputs landen in _public/cache/ und werden mit langem Browser-Cache-Header geliefert.

Browser-Cache

Komprimierte Assets tragen Cache-Control: max-age=31536000, immutable. Beim Komprimieren kommt ein neuer Hash in den Dateinamen — Browser laden die neue Datei automatisch. Veraltete Browser-Caches sind auf CSS/JS-Ebene kein Problem.

Fuer die Content-Ebene (Seiten, Blog, Produktlisten) sorgt der Response-Cache + Cache-Busting auf internen Links fuer Frische.

Wie APCu dazupasst

Response-Cache, Rate-Limiter, Ausschluss-Konfig-Lookup und Cache-Einstellungs-TTL liegen alle in APCu (geteilter Speicher innerhalb eines PHP-FPM-Pools). Ist APCu nicht installiert:

  • Response-Cache wird wirkungslos (berechnet Responses weiterhin).
  • Rate-Limiter faellt auf "immer erlauben".
  • Cache-Einstellungs-TTL wird pro Request aus der DB gelesen.

Pruef im Task-Manager → Systemstatus. Die APCu-Karte muss Aktiv zeigen. Zeigt sie Inaktiv, bitte deinen Entwickler, php-apcu zu installieren.

Haeufige Fehler

Content bearbeitet, Frontend zeigt weiterhin Alt. Klick Cache leeren. Fuer eine einzelne Seite hat der Response-Cache standardmaessig 5 Minuten TTL; Warten reicht auch.

Frontend zeigt nach Deploy kein Styling. Klick JS und CSS komprimieren. Deploys kopieren Dateien, ohne den Komprimierer neu zu starten.

X-Cache: HIT auf einer gerade bearbeiteten Seite. Gleiche Ursache — Cache leeren oder TTL abwarten.

Rate-Limiter scheint nie auszuloesen. APCu aus. Pruef Task-Manager → Systemstatus.

Siehe auch