# Cache Invalidierung

smoxy cached Inhalte am Edge, um die Last auf deinem Origin-Server zu reduzieren. Wenn sich Inhalte ändern, musst du die gecachte Version invalidieren, damit Besucher das Update sehen. smoxy bietet mehrere Methoden dafür — vom Löschen einer einzelnen URL bis zum Flushen ganzer Tag-Gruppen.

Alle Invalidierungsanfragen verwenden die HTTP-Methode `BAN` und erfordern das **Cache-Token**, das in der Grundkonfiguration deiner Site festgelegt ist.

{% hint style="info" %}
**Cloudflare-Nutzer:** Cloudflare kann BAN/PURGE-Requests blockieren. Siehe [Cloudflare Setup](https://docs.smoxy.eu/developer-guide/cloudflare-setup) für die empfohlene Lösung.
{% endhint %}

***

### Methoden

#### Flush URL

Löscht den Cache für eine bestimmte URL.

```bash
curl -X BAN -H "secret: <token>" -H "url: /" https://www.example.com/
```

Du kannst die URL auch als Request-Ziel übergeben:

```bash
curl -X BAN -H "secret: <token>" https://www.example.com/products/my-product
```

#### Flush Tags

Löscht alle gecachten Inhalte, die mit einem oder mehreren Cache-Tags versehen sind. Tags werden über den `x-cache-tags`-Header deiner Origin-Antworten gesetzt (siehe Erweitertes Caching für die Tag-Konfiguration).

Einen einzelnen Tag flushen:

```bash
curl -X BAN -H "secret: <token>" -H "tags: smartphones" https://www.example.com/
```

Mehrere Tags gleichzeitig flushen (kommagetrennt):

```bash
curl -X BAN -H "secret: <token>" -H "tags: smartphones,accessories" https://www.example.com/
```

**Wann Tags verwenden:** Tags sind der effizienteste Weg, Gruppen zusammengehöriger Inhalte zu invalidieren. Wenn dein Shop beispielsweise Produktseiten mit ihrem Kategorienamen taggt, kannst du alle „Samsung"-Produkte mit einem einzigen Request flushen, anstatt jede URL einzeln zu purgen.

**Gängige Tagging-Strategien:**

| Strategie       | Tag-Beispiel                | Anwendungsfall                   |
| --------------- | --------------------------- | -------------------------------- |
| Nach Kategorie  | `smartphones`, `laptops`    | Neue Produkte in einer Kategorie |
| Nach Marke      | `samsung`, `apple`          | Markenweite Preisaktualisierung  |
| Nach Produkt-ID | `product-123`               | Einzelnes Produkt geändert       |
| Nach Seitentyp  | `listing`, `detail`, `home` | Template- oder Layout-Änderung   |

#### Flush File

Löscht eine bestimmte Cache-Datei anhand ihres Cache-Hashs. Nützlich, wenn du den genauen Cache-Eintrag kennst.

```bash
curl -X BAN -H "secret: <token>" -H "cache-file: 469640790ad5bda4d1cc6a19f6770214.html" https://www.example.com/
```

> **Tipp:** Der Cache-Datei-Hash wird als Response-Header zurückgegeben, wenn Debug-Header aktiviert sind.

#### Flush All

Löscht den gesamten Cache der Site. Verwende dies nur als letzten Ausweg — es zwingt jede Anfrage, frisch vom Origin abgerufen zu werden, bis der Cache wieder aufgewärmt ist.

```bash
curl -X BAN -H "secret: <token>" -H "type: flushall" https://www.example.com/
```

***

### Die richtige Methode wählen

| Methode        | Umfang                   | Geschwindigkeit | Origin-Last            |
| -------------- | ------------------------ | --------------- | ---------------------- |
| **Flush URL**  | Einzelne URL             | Sofort          | Minimal                |
| **Flush Tags** | Gruppe verwandter Seiten | Sofort          | Moderat                |
| **Flush File** | Einzelner Cache-Eintrag  | Sofort          | Minimal                |
| **Flush All**  | Gesamter Site-Cache      | Sofort          | Hoch (Cache-Kaltstart) |

Beginne mit der gezielten Methode. Verwende Flush URL für einzelne Seiten, Flush Tags für Gruppen und Flush All nur wenn nötig.

***

### Schnellaktionen

Du kannst den Cache auch ohne Code über die Schnellaktionen im Dashboard leeren:

* **Gesamten Cache leeren** — entspricht Flush All
* **Cache nach URL leeren** — entspricht Flush URL
* **Cache nach Tag leeren** — entspricht Flush Tags
