> ## Documentation Index
> Fetch the complete documentation index at: https://jmail.world/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Caching

> Funktionsweise des ETag-basierten Cachings

Der Python-Client verwendet **ETag-basierte bedingte HTTP-Anfragen**, um unveränderte Dateien nicht erneut herunterladen zu müssen.

## Funktionsweise

1. Beim ersten Download speichert der Client die Datei und ihren ETag unter `~/.cache/jmail/`
2. Bei nachfolgenden Anfragen sendet der Client eine bedingte `HEAD`-Anfrage mit `If-None-Match: <etag>`
3. Wenn der Server mit **304 Not Modified** antwortet, wird die zwischengespeicherte Datei verwendet (kein Download)
4. Wenn sich der ETag geändert hat, wird die Datei erneut heruntergeladen

## Cache-Speicherort

```
~/.cache/jmail/
  emails.parquet
  emails.etag
  emails-slim.parquet
  emails-slim.etag
  documents.parquet
  documents.etag
  ...
```

## Cache deaktivieren

### Python

```python theme={null}
client = JmailClient(cache=False)
```

### Kommandozeilenoberfläche (CLI)

```bash theme={null}
uv run jmail.py emails --no-cache --head 5
```

## Cache leeren

```bash theme={null}
rm -rf ~/.cache/jmail/
```

## Manifest

Der Endpunkt `/v1/manifest.json` stellt Metadaten zu Datensätzen und Prüfsummen bereit und ermöglicht programmatische Prüfungen auf Aktualität:

```bash theme={null}
curl https://data.jmail.world/v1/manifest.json | python -m json.tool
```

```python theme={null}
client = JmailClient()
manifest = client.manifest()
print(manifest)
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.