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

# Almacenamiento en caché

> Cómo funciona el almacenamiento en caché basado en ETag

El cliente de Python usa **solicitudes condicionales basadas en ETag** para evitar descargar de nuevo archivos que no hayan cambiado.

## Cómo funciona

1. En la primera descarga, el cliente guarda el archivo y su ETag en `~/.cache/jmail/`
2. En las solicitudes posteriores, el cliente realiza una petición `HEAD` condicional con `If-None-Match: <etag>`
3. Si el servidor responde con **304 Not Modified**, se usa el archivo en caché (sin volver a descargarlo)
4. Si el ETag ha cambiado, el archivo se vuelve a descargar

## Ubicación de la caché

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

## Deshabilitar la caché

### Python

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

### Interfaz de línea de comandos

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

## Borrar la caché

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

## Manifest

El endpoint `/v1/manifest.json` proporciona metadatos de los conjuntos de datos y checksums, lo que permite realizar comprobaciones programáticas de actualización:

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