API:Verileri önbelleğe alma

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 • ‎español • ‎français • ‎русский • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

Bir istemciden önbelleğe alma kontrolü

HTTP protokolü, tarayıcıların ve web proxy'lerinin Cache-Control başlığına belirtilen çeşitli değerler aracılığıyla içeriği nasıl önbelleğe aldıklarının denetlenmesini sağlar. (Bu yalnızca GET istekleri için çalışır.) API, istemcinin API parametreleri maxage ve smaxage yoluyla bu değerlerden iki tanesini max-age ve s-maxage ayarlamasına olanak tanır.

maxage, tarayıcıya yanıtın ne kadar süre saklanacağını söyler (saniye olarak). smaxage paylaşılan vekiller için aynı şeyi yapar. Uygulamada ikincisi, sunucu tarafı ters proxy'sine talimat vermek için kullanılır (örneğin, Wikimedia'nın Varnish ).

Hatalar asla önbelleğe alınmaz. Kullanıcıya özel yanıtlar, Cache-Control: private olarak işaretlenir, böylece tarayıcı bunları önbelleğe alır, ancak genel proxy'ler bulamaz. Şu anda, API varsayılan olarak giriş yapmış bir kullanıcının dil ayarını kullanmaktadır, bu yüzden giriş yapmış kullanıcılara verilen cevaplar her zaman özeldir. Bu, uselang=content API parametresi eklenerek önlenebilir (T97096).

Önbellek isabet oranını iyileştirme

İstek, yalnızca bu URL tam olarak önbelleğe alınmışsa önbellekten sunulur. (Örneğin, maxage=1800 ile ve sonra maxage=3600 ile aynı isteği yaparsanız, ikincisi ilkinin önbellek girdisini kullanamaz çünkü farklı maxage parametresi URL'yi farklı kılar.) Bir sayfa listesini parametre olarak iletirseniz, bunları sıralayarak ve tekilleştirerek önbellek isabet oranını artırabilirsiniz.

Bir API modülünden önbelleğe alma kontrolü

Önbellekleme, ApiMain::setCache* yöntemleriyle belirtilir. Genellikle önbellekleme, yalnızca ApiQueryBase devralması gereken getCacheMode yöntemini kullanması gereken query alt modüllerinde bir endişe kaynağı olacaktır.