next up previous contents index
Next: ``Úklid'' Up: Implementace Previous: Expirační model a revalidace

``Vary features''

Poměrně inovativní částí funkčnosti modulu storage je volitelné zohledňování položky Vary v odpovědi serveru (význam této položky je popsán v oddílu Storage a HTTP), což se děje následujícím způsobem:

Vytvoření záznamu
 4 - pokud je v odpovědi serveru nalezena položka Vary, pak je do záznamu zapsána pouze tato hlavička, následně je zavolána funkce sg_extractreqdata s argumenty aktuálního požadavku klienta a obsahem pole Vary, který nese seznam polí, na nichž je závislý dynamický obsah dokumentu generovaného cílovým serverem. Výstupem funkce sg_extractreqdata je abecedně setříděné pole položek hlavičky uvedených ve Vary z odpovědi serveru, které se použije k aktualizaci identifikace zpracovávaného záznamu, kdy jsou extrahované položky z požadavku po řadě připojovány k URL záznamu následujícím způsobem:

vfc=sg_extractreqdata(req,fp,&vf);5

for(i=0;i<vfc;i++)

if(vf[i].field&&vf[i].value) {

 sg_updateentryhash(entry," ",1,FALSE);

 sg_updateentryhash(entry,vf[i].field,vf[i].flen,FALSE);

 sg_updateentryhash(entry,": ",2,FALSE);

 sg_updateentryhash(entry,vf[i].value,vf[i].vlen,FALSE);

}

sg_updateentryhash(entry,NULL,0,TRUE);6

V této fázi tedy opět máme záznam, který identifikuje dokument v závislosti na vybraných parametrech požadavku klienta (výběr těchto parametrů je učiněn právě přítomností položky Vary) a zpracování pokračuje normálním způsobem.

Obsluha záznamu
 7 - postup je obdobný jako v předchozí části, pouze dochází k detekci položky Vary v hlavičce záznamu na disku

Aktivování této volby přináší mimo korektního chování proxy serveru při komunikaci s webservery využívajícími podobné ``vymoženosti'' HTTP také některé nevýhody, např. o něco pomalejší zpracování požadavku, v případě, že obsahuje položku Vary (pokud odpověď položku Vary neobsahuje, pak k žádnému zpomalení nedochází) a také možnou redundanci při ukládání dokumentů, protože cílový server může na různé parametry požadavku klienta odpovědět stejným dokumentem, což ovšem proxy server nepozná, neboť díky ``Vary features'' budou mít tyto požadavky různou identifikaci a dokument bude proto uložen vícekrát. V současné době je nejčastější výskyt Vary položky u serverů, které posílají různé jazykové mutace dokumentů (modul mod_czech v Apache, viz třeba www.kolej.mff.cuni.cz) v závislosti na nastavení prohlížeče (např. ``Vary: Accept-Language'' apod.), kde je myslím nanejvýš přijatelná redundance na straně proxy serveru, než chybný dokument na straně klienta, ovšem využití položky Vary může být naprosto obecné, pro jakýkoli typ dat přenositelných po HTTP.


next up previous contents index
Next: ``Úklid'' Up: Implementace Previous: Expirační model a revalidace
Stanislav Pavlicek
2000-06-12