API:데이터 캐시 처리
이 문서는 MediaWiki Action API 문서의 부분입니다. |
클라이언트에서 캐시 제어하기
The HTTP protocol allows controlling how browsers and web proxies cache content, via various values specified to the Cache-Control
header.
(GET 요청에만 동작합니다.)
The API allows the client to set two of these values, max-age
and s-maxage
, via the API parameters maxage
and smaxage
.
maxage
tells the browser how long the response should be cached (in seconds).
smaxage
does the same for shared proxies. In practice the latter is typically used to instruct the server-side reverse proxy (such as Wikimedia's Varnish ).
Errors are never cached. User-specific responses will be marked as Cache-Control: private
so the browser will cache them but public proxies won't.
Currently the API uses a logged-in user's language setting by default, so responses to logged-in users are always private.
This can be avoided by adding the uselang=content
API parameter (T97096).
Improving cache hit ratio
A request is only served from cache if that exact URL has been cached.
(E.g. if you make the same request with maxage=1800
and then with maxage=3600
, the second won't be able to use the first's cache entry because the different maxage
parameter makes the URL different.)
If you pass a list of pages as a parameter, you might improve cache hit ratio by sorting and deduplicating them.
API 모듈에서 캐시 제어하기
Caching is specified by the ApiMain::setCache*
methods.
Typically caching is only going to be a concern in the query submodules, which should use getCacheMode
method instead, which they inherit from ApiQueryBase
.