# Erweitertes Caching

smoxy bietet eine CDN-Caching-Schicht, die Kopien deiner Inhalte speichert. Diese Anleitung behandelt alle verfügbaren Caching-Konfigurationsoptionen für deine Site, einschließlich TTL, Cache-Key-Zusammensetzung, Cache-Tags und Stale-Cache-Verhalten.

***

### Cache-TTL (Time-to-Live)

Die Cache-TTL bestimmt, wie lange smoxy deine Inhalte zwischenspeichert, bevor eine frische Kopie von deinem Origin-Server angefordert wird.

| Einstellung  | Wert                      |
| ------------ | ------------------------- |
| **Minimum**  | 300 Sekunden (5 Minuten)  |
| **Maximum**  | 604.800 Sekunden (7 Tage) |
| **Standard** | 604.800 Sekunden (7 Tage) |

***

### 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

| Komponente | Einstellung           | Standard                     | Beschreibung                                           |
| ---------- | --------------------- | ---------------------------- | ------------------------------------------------------ |
| **URI**    | Immer enthalten       | —                            | Der Anfragepfad ist immer Teil des Cache-Keys          |
| **Host**   | `host_vary_enabled`   | Aus Konfiguration abgeleitet | Den Anfrage-Hostnamen in den Cache-Key einbeziehen     |
| **Cookie** | `cookie_vary_enabled` | Aktiviert                    | Cache basierend auf bestimmten Cookie-Werten variieren |

#### Host Vary

Wenn **Host Vary** aktiviert ist, erzeugen Anfragen an verschiedene Hostnamen auf derselben Site separate Cache-Einträge. Dies ist wichtig, wenn mehrere Hostnamen auf derselben Site unterschiedliche Inhalte für denselben Pfad ausliefern.

**Beispiel:** Mit aktiviertem Host Vary werden `www.example.com/about` und `shop.example.com/about` separat gecacht.

#### Cookie Vary

Wenn **Cookie Vary** 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.

Konfiguriere, auf welche Cookies variiert werden soll, indem du **Cookie-Parameternamen** angibst — eine kommagetrennte Liste von Cookie-Namen.

**Beispiel:** Wenn du Cookie-Vary-Parameter auf `language` setzt, erhalten ein Besucher mit `language=en` und ein Besucher mit `language=de` separat gecachte Antworten.

**Cookie-Namensregeln:** In Cookie-Namen sind nur alphanumerische Zeichen, Bindestriche und Unterstriche erlaubt.

#### Ausgeschlossene Query-Parameter

Standardmäßig ist der vollständige Query-String Teil des Cache-Keys. Du kannst bestimmte Query-Parameter ausschließen, die das Caching nicht beeinflussen sollen — typischerweise Tracking-Parameter, die den Seiteninhalt nicht verändern.

Konfiguriere 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 dir, gecachte Inhalte zu gruppieren und selektiv zu invalidieren. Dein Origin-Server sendet Cache-Tag-Werte in HTTP-Response-Headern, und smoxy verwendet diese, um gecachte Inhalte mit Tags zu verknüpfen. Wenn du einen Tag purgst, werden alle damit verknüpften gecachten Inhalte invalidiert.

#### Konfiguration

Du kannst 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 (einzelnes Zeichen) |

**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. Du kannst sie nach Bedarf ändern oder weitere Header hinzufügen.

#### Cache-Tag-Ignorier-Liste

Du kannst eine Liste von Tag-Mustern konfigurieren, die ignoriert werden sollen. Tags, die diesen Mustern entsprechen, werden nicht gespeichert, was den Cache-Metadaten-Overhead für Tags reduziert, die du nie invalidieren möchtest.

Gib eine kommagetrennte Liste von Tag-Namen oder -Mustern ein.

**Erlaubte Zeichen:** Alphanumerisch, Klammern, geschweifte Klammern, eckige Klammern, Bindestriche, Unterstriche, Punkte, Schrägstriche und Sternchen.

***

### Cache-Control-Header

Wenn aktiviert, respektiert smoxy den `Cache-Control`-Header aus der Antwort deines Origin-Servers. Dies ermöglicht es deinem Origin, das Caching-Verhalten pro Antwort zu steuern.

| Einstellung                    | Standard    |
| ------------------------------ | ----------- |
| `cache_control_header_enabled` | Deaktiviert |

Wenn deaktiviert, verwendet smoxy die konfigurierte TTL für alle cachebaren Antworten, unabhängig vom `Cache-Control`-Header des Origins.

***

### 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. Wähle basierend darauf, wie häufig sich dein Inhalt ändert.
* **Cookie Vary mit Bedacht:** Variiere nur auf Cookies, 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 deinen Seiteninhalt nicht. Das Ausschließen aus dem Cache-Key verbessert deine Cache-Trefferrate erheblich.
* **Cache-Tags erfordern Origin-Kooperation:** Dein 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.
