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

# Mise en cache

> Comment fonctionne la mise en cache basée sur les ETag

Le client Python utilise des **requêtes conditionnelles basées sur les ETag** pour éviter de retélécharger les fichiers qui n’ont pas changé.

## Fonctionnement

1. Lors du premier téléchargement, le client enregistre le fichier et son ETag dans le cache local `~/.cache/jmail/`
2. Lors des requêtes suivantes, le client envoie une requête `HEAD` conditionnelle avec `If-None-Match: <etag>`
3. Si le serveur répond avec **304 Not Modified**, le fichier en cache est utilisé (aucun téléchargement)
4. Si l’ETag a changé, le fichier est téléchargé à nouveau

## Emplacement du cache

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

## Désactiver le cache

### Python

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

### Interface en ligne de commande

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

## Vider le cache

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

## Manifest

Le point de terminaison `/v1/manifest.json` fournit les métadonnées des jeux de données et leurs sommes de contrôle, permettant des contrôles automatisés de la fraîcheur des données :

```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.