API:Cache de données

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Caching data and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎français • ‎русский • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

Contrôle du cache client

Le protocole HTTP permet de contrôler comment les navigateurs internet et les serveurs proxys mettent le contenu en cache, à l'aide de différentes valeurs spécifiées dans le header Cache-Control. (Ceci marche uniquement pour les requêtes GET.) Cette API permet au client d'affecter deux de ces valeurs, max-age ets-maxage, à l'aide de API parameters maxage et smaxage.

maxage indique au navigateur combien de temps la réponse doit-être laissé en cache (en secondes). smaxage fait la même chose pour les proxies partagés. En pratique, ce dernier est notamment utilisé comme instruction pour le reverse proxy côté serveur (tel que Varnish de Wikimedia)

Les erreurs ne sont jamais placées en cache. Les réponses spécifiques à un utilisateur seront marqué par Cache-Control: private afin que le navigateur les mette en cache, mais pas les proxies publics. Actuellement, l'API utilise les paramètres de langage par défaut d'un utilisateur authentifié, ainsi les réponses à un utilisateur authentifié sont toujours privées. Cela peut être évité en ajoutant le paramètre d'API uselang=content (T97096).

Améliorer le cache hit ratio

Une requête est chargée à partir du cache seulement si cette URL exacte à été mise en cache. (Par exemple, si vous exécutez la même requête avec maxage=1800 puis avec maxage=3600, la seconde ne pourra pas utiliser le cache de la première, puisque le paramètre maxage rend l'URL différente.) Si vous passez une liste de pages en paramètre, vous pouvez améliorer le ratio d'appels au cache en les triant et en enlevant les doublons.

Contrôler le cache à partir d'un module API

La mise en cache est spécifiée par les méthodes ApiMain::setCache*. Typiquement, la mise en cache sera seulement un souci dans les sous-modules query , qui devraient utiliser la méthode getCacheMode à la place, qu'ils héritent de ApiQueryBase.