API: almacenamiento en caché de datos

From mediawiki.org
This page is a translated version of the page API:Caching data and the translation is 100% complete.

Controlar el almacenamiento en caché desde un cliente

El protocolo HTTP permite controlar cómo los navegadores y los proxies web almacenan en caché el contenido, a través de varios valores especificados en el encabezado de Cache-Control. (Esto solo funciona para solicitudes GET). El API permite al cliente establecer dos de estos valores, max-age y s-maxage, a través de Parámetros API maxage y smaxage.

maxage le dice al navegador cuánto tiempo se debe almacenar en caché la respuesta (en segundos). smaxage hace lo mismo para servidores proxy compartidos. En la práctica el último se usa típicamente para instruir al proxy inverso del lado del servidor (como los Varnish de Wikimedia).

Los errores nunca se almacenan en caché. Las respuestas específicas del usuario se marcarán como Cache-Control: private, por lo que el navegador las almacenará en caché, pero los proxies públicos no. Actualmente, la API utiliza la configuración de idioma de un usuario que ha iniciado sesión de forma predeterminada, por lo que las respuestas a los usuarios que han iniciado sesión son siempre privadas. Esto se puede evitar agregando el parámetro API uselang=content (T97096).

Mejora de la proporción de aciertos de caché

Una solicitud solo se sirve desde el caché si esa URL exacta ha sido almacenada en caché. (P.ej., si realizas la misma solicitud con maxage=1800 y luego con maxage=3600, el segundo no podrá usar la entrada de caché del primero porque el parámetro diferente maxage hace que la URL sea diferente). Si pasas una lista de páginas como parámetro, puedes mejorar la proporción de aciertos de caché al ordenarlas y deduplicarlas.

Control del almacenamiento en caché desde un módulo API

El almacenamiento en caché se especifica mediante los métodos de ApiMain::setCache*. Por lo general, el almacenamiento en caché solo será una preocupación en los submódulos query , que deberían usar el método getCacheMode, que heredan de ApiQueryBase.