Cache
smoxy bietet eine CDN-Caching-Schicht, die Kopien der Inhalte am Edge speichert. Diese Anleitung behandelt die für die Zone verfügbare Caching-Konfiguration -- Caching-Verhalten, TTL, Cache-Key-Zusammensetzung, Cache-Tags, Edge-Verarbeitung und Stale-Cache-Verhalten. Wo die Cache-Entscheidung im gesamten Anfrageablauf steht, zeigt der Lebenszyklus einer Anfrage.


Dynamischer Cache
Der Schalter Dynamischer Cache aktiviert das Caching der text/html-Antworten der Zone auf den Edge-Servern von smoxy, was die Origin-Last reduziert und die Performance verbessert. Statische Assets werden unabhängig von dieser Einstellung gecacht.


Gut geeignet für HTML-Caching: Produkt- und Kategorieseiten, Blogbeiträge, Landingpages, Dokumentation -- jede Seite, deren HTML sich nicht pro Besucher ändert. Nicht geeignet: personalisierte Seiten (Benutzer-Dashboards, Warenkörbe), Seiten mit Echtzeitdaten und dynamische API-Antworten. Für gemischte Seiten (z. B. eine Produktseite mit personalisiertem Warenkorb-Widget) können SSI/ESI die statischen Teile getrennt von den dynamischen Fragmenten cachen.
Ändert sich der HTML-Inhalt, sollte der Cache invalidiert werden, damit Besucher die aktuelle Version sehen (Cache-Invalidierung). Die konfigurierte TTL gilt für HTML wie für alle anderen gecachten Inhalte; variiert das HTML nach Cookie (Sprache, Login-Status), sollte die Cookie-Komponente entsprechend konfiguriert werden. Eine Steuerung pro Anfrage -- Caching nur für bestimmte Pfade oder keines für eingeloggte Benutzer -- ist über Conditional Rules möglich.
Cache-Control berücksichtigen
Der Schalter Origin-Cache-Control berücksichtigen -- standardmäßig aktiviert -- überlässt dem Origin die Steuerung des Cachings pro Antwort über dessen Cache-Control-Header. Wenn aktiviert, cacht smoxy keine Antworten, die mit no-cache, private oder max-age=0 gekennzeichnet sind, sodass diese Anfragen weiterhin den Origin erreichen.
s-maxage hat Vorrang. Als Shared Cache wertet smoxy die s-maxage-Direktive vor max-age aus. Eine Antwort mit Cache-Control: max-age=0, s-maxage=3600 wird daher gecacht -- max-age=0 untersagt nur dem Browser das Caching, während s-maxage>0 Proxy-Caches wie smoxy das Speichern ausdrücklich erlaubt. Nur ohne positives s-maxage führt max-age=0 zu einem Bypass. Diese Kombination ist in Frameworks üblich, die Browser- und Proxy-Caching trennen, etwa Shopware 6 oder Symfony HttpCache.
| Einstellung | Standard |
|---|---|
| Origin-Cache-Control berücksichtigen | Aktiviert |
Wenn deaktiviert, verwendet smoxy die konfigurierte TTL für alle cachebaren Antworten, unabhängig vom Cache-Control-Header des Origins.
Cache-TTL (Time-to-Live)
Die Standard-TTL bestimmt, wie lange smoxy die Inhalte zwischenspeichert, bevor eine frische Kopie vom Origin-Server angefordert wird. Es handelt sich um ein Dropdown mit festen Vorgaben:
5 Minuten · 15 Minuten · 30 Minuten · 1 Stunde · 6 Stunden · 12 Stunden · 1 Tag · 2 Tage · 3 Tage · 7 Tage
Der Standard ist 7 Tage (604.800 Sekunden).
Cache-Key
Der Cache-Key bestimmt, wie smoxy eindeutige gecachte Antworten identifiziert. Zwei Anfragen mit demselben Cache-Key liefern denselben gecachten Inhalt. Das Verständnis des Cache-Keys ist wichtig, um zu vermeiden, dass veralteter oder falscher Inhalt ausgeliefert wird.


Komponenten
Standardmäßig wird der Cache-Key aus der Request-URI und dem Query-String gebildet. Zwei optionale Komponenten lassen sich ergänzen -- beide standardmäßig deaktiviert:
| Komponente | Steuerung | Standard | Beschreibung |
|---|---|---|---|
| Request-URI | Immer enthalten | -- | Der Anfragepfad ist immer Teil des Cache-Keys |
| Request-Hostname | Schalter | Deaktiviert | Bezieht den Anfrage-Hostnamen ein, sodass verschiedene Hostnamen getrennt cachen |
| Cookie-Wert | Schalter | Deaktiviert | Variiert den Cache anhand bestimmter Cookie-Werte |
Request-Hostname
Wenn Request-Hostname aktiviert ist, erzeugen Anfragen an verschiedene Hostnamen auf derselben Zone separate Cache-Einträge. Dies ist wichtig, wenn mehrere Hostnamen auf derselben Zone unterschiedliche Inhalte für denselben Pfad ausliefern.
Beispiel: Mit dieser Aktivierung werden www.example.com/about und shop.example.com/about separat gecacht.
Cookie-Wert
Wenn Cookie-Wert aktiviert ist, bezieht smoxy bestimmte Cookie-Werte in den Cache-Key ein. Dies ist nützlich, um unterschiedliche Inhalte basierend auf Benutzereinstellungen wie Sprache oder Region auszuliefern.
Welche Cookies variiert werden, lässt sich unter Cookie-Namenswerte angeben -- eine Liste von Cookie-Namen.
Beispiel: Wird auf language variiert, erhalten ein Besucher mit language=en und ein Besucher mit language=de separat gecachte Antworten.
Ausgeschlossene Query-Parameter
Standardmäßig ist der vollständige Query-String Teil des Cache-Keys. Bestimmte Query-Parameter lassen sich ausschließen, die das Caching nicht beeinflussen sollen -- typischerweise Tracking-Parameter, die den Seiteninhalt nicht verändern.
Konfiguriert wird eine kommagetrennte Liste von Parameternamen zum Ausschließen.
Häufige Ausschlüsse: utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid, fbclid
Parameternamensregeln: Nur alphanumerische Zeichen und Bindestriche sind erlaubt.
Cache-Tags
Cache-Tags ermöglichen es, gecachte Inhalte zu gruppieren und selektiv zu invalidieren. Der Origin-Server sendet Cache-Tag-Werte in HTTP-Response-Headern, und smoxy verwendet diese, um gecachte Inhalte mit Tags zu verknüpfen. Beim Purgen eines Tags werden alle damit verknüpften gecachten Inhalte invalidiert.


Konfiguration
Es lassen sich bis zu 4 Cache-Tag-Header konfigurieren. Jeder Header hat einen Namen und ein Trennzeichen.
| Einstellung | Beschreibung |
|---|---|
| Header-Name | Der HTTP-Response-Header, der die Tag-Werte enthält |
| Trennzeichen | Das Zeichen, das mehrere Tags innerhalb des Headers trennt -- eines von Leerzeichen, ,, ; oder | |
Header-Namensregeln: Nur alphanumerische Zeichen und Bindestriche sind erlaubt.
Standards
smoxy ist mit zwei Cache-Tag-Headern vorkonfiguriert:
| Header | Trennzeichen | Beispiel |
|---|---|---|
x-cache-tags | , (Komma) | x-cache-tags: product-123,category-shoes |
xkey | (Leerzeichen) | xkey: product-123 category-shoes |
Diese Standards decken die gängigsten Cache-Tagging-Konventionen ab. Eine Anpassung nach Bedarf oder das Hinzufügen weiterer Header ist möglich.
Cache-Tag-Ignorier-Liste
Eine Liste von Tag-Mustern lässt sich konfigurieren, die ignoriert werden sollen. Tags, die diesen Mustern entsprechen, werden nicht gespeichert, was den Cache-Metadaten-Overhead für Tags reduziert, die nie invalidiert werden sollen.
Einzugeben ist eine kommagetrennte Liste von Tag-Namen oder -Mustern.
Erlaubte Zeichen: Alphanumerisch, Klammern, geschweifte Klammern, eckige Klammern, Bindestriche, Unterstriche, Punkte, Schrägstriche und Sternchen.
SSI & ESI
smoxy unterstützt Server Side Includes (SSI) und Edge Side Includes (ESI) zum Zusammensetzen von Seiten aus mehreren Fragmenten am Edge.
| Feature | Beschreibung |
|---|---|
| SSI | Verarbeitet <!--#include -->-Direktiven in HTML-Antworten |
| ESI | Verarbeitet <esi:include>-Tags für Edge-seitiges Seitenzusammensetzen |
INFO
Hinweis: ESI kann nur aktiviert werden, wenn SSI ebenfalls aktiviert ist.
Diese Features sind nützlich für Sites, die Seiten aus cachebaren Fragmenten mit unterschiedlichen TTLs zusammensetzen (z. B. ein statischer Header der stundenlang gecacht wird und ein dynamisches Warenkorb-Widget das sekündlich gecacht wird).
Stale-Cache
Die Stale-Cache-Steuerung erlaubt es smoxy, veraltete Inhalte aus dem CDN-Cache auszuliefern, statt zu scheitern oder auf den Origin zu warten. Zwei unabhängige Schalter:
| Schalter | Verhalten |
|---|---|
| Bei Nichterreichbarkeit | Liefert gecachte Inhalte aus, wenn der Origin nicht erreichbar ist |
| Während der Aktualisierung | Liefert gecachte Inhalte aus, während im Hintergrund eine frische Kopie geholt wird |
INFO
Hinweis: Stale-Cache ist nur mit CDN verfügbar.
Fehlerantworten cachen
Wenn aktiviert, werden Fehlerantworten (HTTP 300+) des Origins kurz gecacht -- etwa 5 Sekunden --, um ihn vor wiederholten Upstream-Ausfällen zu schützen.
INFO
Hinweis: Das Cachen von Fehlerantworten ist nur mit CDN verfügbar.
Purge-Token
Jede Zone verfügt über ein automatisch generiertes Purge-Token, das Anfragen zur Cache-Invalidierung (Purge) an die API von smoxy authentifiziert. Es wird auf der Cache-Seite angezeigt und kann nicht manuell gesetzt werden. Es wird in den Purge-Anfragen mitgesendet, um sie zu autorisieren.
Siehe Cache-Invalidierung zum Senden von Purge-Anfragen.
Der s-cache Response-Header
Wenn Dynamischer Cache oder Optimierung aktiviert ist, fügt smoxy jeder Antwort einen s-cache-Response-Header hinzu, der mitteilt, wie die Anfrage bedient wurde. Er dient zum Debuggen der Cache-Trefferrate, zur Überprüfung des Regelverhaltens und zur Bestätigung, dass die Cache-Control-Direktiven des Origins respektiert werden.
HIT
Die Ressource wurde im Cache von smoxy gefunden und direkt vom Edge ausgeliefert - keine Origin-Anfrage.
MISS
Die Ressource war nicht im Cache und wurde vom Origin geholt. Um zu verhindern, dass Browser die Miss-Antwort cachen, setzt smoxy cache-control: no-cache, no-store, must-revalidate auf der Antwort - das garantiert, dass die nächste Anfrage als HIT bedient werden kann, sobald smoxy den Inhalt gespeichert hat.
BYPASS
smoxy hat den Cache absichtlich übersprungen. Dies passiert, wenn:
- Origin-Cache-Control berücksichtigen aktiviert ist und der Origin
Cache-Control: no-cache,privateodermax-age=0ohne positivess-maxagezurückgegeben hat -- ists-maxage>0vorhanden, wird die Antwort stattdessen gecacht (siehe Cache-Control berücksichtigen). - Die Anfrage einen
http-bypass-Header mit einem gültigen Token oder einer base64-kodierten Form des Hostnamens trug. - Der Content-Type der Antwort nicht für Caching geeignet ist (siehe Unterstützte MIME-Typen).
Wichtige Hinweise
- TTL-Abwägung: Eine längere TTL bedeutet weniger Origin-Traffic, aber langsamere Content-Aktualisierungen. Eine kürzere TTL bedeutet frischeren Inhalt, aber mehr Origin-Anfragen. Die Wahl richtet sich danach, wie häufig sich der Inhalt ändert.
- Auf Cookies mit Bedacht variieren: Nur auf Cookies variieren, die tatsächlich den Antwortinhalt beeinflussen. Das Variieren auf Session-IDs oder Tracking-Cookies deaktiviert das Caching effektiv, da jeder Besucher einen einzigartigen Cache-Eintrag erhält.
- Tracking-Parameter ausschließen: Marketing-Parameter wie UTM-Tags ändern den Seiteninhalt nicht. Das Ausschließen aus dem Cache-Key verbessert die Cache-Trefferrate erheblich.
- Cache-Tags erfordern Origin-Kooperation: Der Origin-Server muss die konfigurierten Tag-Header in seinen Antworten senden. smoxy liest diese Header und speichert die Verknüpfung - es generiert keine Tags automatisch.
