Next: Vytvoření záznamu
Up: Životní cyklus záznamu
Previous: Životní cyklus záznamu
Tato akce má za úkol určení, zda je možné příslušnou odpověď od serveru uložit
na FS, tedy zda vznikne pro odpověď z cílového serveru příslušný záznam.
- Analýza požadavku
- Pokud požadavek obsahuje direktivu
"Pragma: no-cache", pak je proxy server povinen kontaktovat
cílový server a jeho odpověď beze změny a ukládání odeslat klientovi, což ovšem
díky chování některých prohlížečů degraduje proxy server pouze na "rouru"
("pipe") mezi klientem a cílovým serverem, což nemusí být
žádoucí. Jedná se speciálně o prohlížeče s interní cache (MSIE,Netscape), které
formulují požadavek na proxy server pouze jako revalidátor vlastního záznamu,
např.:
-
- GET http://www.postgresql.org/ HTTP/1.0
If-Modified-Since: Sat, 13 May 2000 17:37:12 GMT;
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.72 [en]
Pragma: no-cache
Host: www.postgresql.org
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: cs, en
Accept-Charset: iso-8859-1
což ve spojení s direktivou "Pragma: no-cache" způsobí, že
sice dojde k občerstvení záznamu v interní cache prohlížeče, ovšem nikoli už
na proxy-serveru. Z tohoto důvodu je možné vypnout respektování direktivy "Pragma:
no-cache" v hlavičce klienta, pomocí konfigurační volby "sg_ignore_client_no_cache"
(výchozí nastavení pro tuto volbu je ovšem FALSE).
- Analýza odpovědi
- Pro uložení v cache musí odpověď splňovat následující podmínky:
- 1.
- Stavový kód musí být 200, 203, 300, 301 nebo 410.
- 2.
- Musí být přítomná položka "Date".
- 3.
- Nesmí obsahovat explicitní zákaz cachování, tzn. položky
- Pragma: no-cache
- Cache-Control: no-cache
- Cache-Control: max-age=0
- Cache-Control: private
- 4.
- Musí obsahovat položku "Content-Length" (tento požadavek je
možné vyřadit konfigurační volbou "sg_store_nocontentlength_entry")
a pokud jí obsahuje, tak nesmí překročit maximální velikost záznamu (konfigurační
volba "sg_max_entry_size").
Součástí analýzy odpovědi je i zohlednění položky "Vary" (volitelně
konfigurační volbou "sg_vary_features"), která ovšem neovlivňuje
klasifikaci záznamu.
Next: Vytvoření záznamu
Up: Životní cyklus záznamu
Previous: Životní cyklus záznamu
Stanislav Pavlicek
2000-06-12