API:Daten cachen
Diese Seite ist Teil der Dokumentation der MediaWiki action API. |
Cache vom Client steuern
Das HTTP-Protokoll erlaubt es zu steuern, wie Browser und Internetproxys Inhalte im Cache speichern, durch verschiedene Werte, die im Cache-Control
Header angegeben sind.
(Dies funktioniert nur bei GET-Anfragen.)
Die API erlaubt dem Client, zwei dieser Werte zu setzen, max-age
und s-maxage
, über API parameters maxage
und smaxage
.
maxage
sagt dem Browser, wie lange die Antwort im Cache behalten werden soll (in Sekunden).
smaxage
tut das Gleiche für geteilte Proxys. In der Praxis wird Letzteres für gewöhnlich dafür benutzt, den Reverse Proxy auf der Server-Seite anzuweisen (so wie bei Wikimedias Varnish ).
Fehler werden nie im Cache gespeichert. Benutzerspezifische Antworten werden als Cache-Control: private
markiert, sodass der Browser sie im Cache speichert, nicht aber öffentliche Proxys.
Momentan benutzt die API standardmäßig die Spracheinstellung des eingeloggten Nutzers, also sind Antworten an eingeloggte Nutzer immer privat.
Das kann vermieden werden durch Einsetzen der uselang=content
API-Parameter (T97096).
Verbesserung der Cache-Trefferrate
Eine Anfrage wird nur vom Cache bedient, wenn die exakte URL im Cache gespeichert wurde.
(Wenn man z.B. die gleiche Anfrage mit maxage=1800
stellt und dann mit maxage=3600
, wird die zweite nicht den Cache-Eintrag der ersten benutzen können, weil der unterschiedliche maxage
-Prameter die URL verändert.)
Wenn man eine Liste von Seiten als Parameter übergibt, kann man die Cache-Trefferrate verbessern, indem man sie sortiert und dedupliziert.
Cache von einem API-Modul aus steuern
Das Speichern im Cache wird durch die ApiMain::setCache*
-Methoden bestimmt.
Im Normalfall ist das Speichern im Cache nur relevant in den query -Submodulen, die stattdessen die getCacheMode
-Methode benutzen sollten, die sie von ApiQueryBase
erben.