API:缓存数据
Appearance
| 本页是MediaWiki Action API帮助文档的一部分。 |
從客戶端控制快取
HTTP 協定允許透過向 Cache-Control 檔頭指定各種值來控制瀏覽器和 Web 代理程式如何快取內容。
(這僅適用於GET請求。)
API可讓客戶端透過API參數 maxage 和 smaxage 設定其中兩個值 max-age 和 s-maxage。
maxage 告訴瀏覽器回應應該快取多長的時間(以秒為單位)。
smaxage 對共享代理伺服器也適用。
實際上,後者通常用於指示伺服器側的反向代理伺服器(例如 Wikimedia 的 Varnish)。
錯誤訊息不會被快取。使用者特定的回應會被標記為 Cache-Control: private,因此瀏覽器會快取它們,但公共代理伺服器不會。
目前,API預設使用已登入使用者的語言設置,因此對已登入使用者的回應始終是私密的。
這種情況可透過增加 uselang=content API參數(T97096)來避免。
提高快取命中率
只有當請求的 URL 已被快取時,才會從快取中提供請求服務。
(舉例來說,如果您先使用 maxage=1800 發出請求,然後再使用 maxage=3600 發出相同的請求,則第二個請求將無法使用第一個請求的快取項目,因為不同的maxage參數導致URL不同。)
如果將頁面清單作為參數傳遞,則可以透過對頁面排序和去重覆來提高快取命中率。
透過API模組控制快取
快取由方法 ApiMain::setCache* 所指定。
通常情況下,快取只會是 query 子模組需要考慮的問題,這些子模組應該使用 getCacheMode 方法,而 getCacheMode 方法是從 ApiQueryBase 繼承的。