Cargar caché de contenido de Docs
Antylogic carga `articles.json` cuando una petición `GET` necesita mostrar el índice o un artículo de Docs. El backend conserva el contenido decodificado en memoria y lo reutiliza hasta que avanza el `mtime` del archivo.
En este artículo
Usa esta guía para entender qué ocurre cuando la ayuda pública o la ayuda interna muestran contenido de documentación. Para el operador, el efecto visible es que el índice y los artículos se sirven desde el bundle vigente de Docs.
No existe botón ni endpoint para forzar la recarga. La siguiente petición `GET` no-asset después de reemplazar el bundle es la que permite al backend comprobar el `mtime` y decidir si debe releer `articles.json`.
Antes de empezar
- El backend debe tener registradas las rutas de Docs.
- `DOCS_CONTENT_PATH` debe apuntar a un directorio con `articles.json` o directamente a un archivo `.json`; si no se define, se usa `./docs-content`.
- `articles.json` debe existir y ser JSON válido para el backend.
- Para `/api/app/docs` hace falta sesión válida con token Bearer o cookie `access_token`; `/api/public/docs` no requiere sesión.
- Para capturas en ES, usar la sesión demo `restaurant_full_v1-es` y abrir `antylogic://docs`.
Instrucciones
- 1.
Abrir la ayuda interna
En la sesión demo de Grupo Marea Demo, abre `antylogic://docs`. La pantalla solicita el índice a `GET /api/app/docs`. Si la caché está vacía o el `mtime` del archivo avanzó, el backend lee `articles.json`, lo decodifica y conserva el contenido en memoria.
- 2.
Abrir un artículo real
Abre `antylogic://docs/acceso/es-access-users-invite-location`. El detalle usa el mismo servicio que el índice y resuelve el artículo desde el bundle de documentación ya cargado o reutilizado.
- 3.
Entender cuándo se recarga
Después de reemplazar el bundle, la siguiente petición `GET` no-asset consulta el `mtime`. Sólo se vuelve a leer y decodificar el JSON si esa fecha es posterior a la cargada en memoria.
- 4.
Distinguir la caché interna de la HTTP
La caché interna conserva el JSON decodificado dentro del proceso backend. `DOCS_CACHE_CONTROL_DEFAULT` controla la cabecera HTTP de índice y detalle, pero no fuerza ni evita la recarga interna de `articles.json`.
Validaciones y límites
- `GET /api/public/docs` no requiere sesión; `GET /api/app/docs` sí requiere autenticación válida.
- `HEAD /api/app/docs` y `HEAD /api/public/docs` responden antes de cargar contenido, por lo que no demuestran esta acción.
- Las rutas `/api/*/docs/assets/...` se atienden antes de leer `articles.json`; no sirven como evidencia de carga de caché.
- Si `articles.json` no existe, la respuesta esperada es `503 documentacion no configurada`.
- Si el JSON no se puede leer o decodificar, la respuesta esperada es `500 documentacion no disponible`.
- Si el artículo no existe, el detalle devuelve `404 articulo no encontrado`; eso no implica fallo de caché si el índice cargó correctamente.
- La caché es local a cada proceso backend y no se comparte entre instancias.
Resultado esperado
El índice y el detalle de Docs se muestran con el bundle vigente. El backend mantiene el contenido en memoria y lo reutiliza hasta que una petición `GET` detecta un `mtime` más reciente en `articles.json`.