next up previous contents index
Next: Vytváření digestů Up: Modul Cache Digests Previous: Příklad

Stahování digestů

Digesty si cache mezi sebou vyměňují pasivním způsobem (vztaženo k tvůrci), tedy cache si stahuje digesty svých partnerů a není to tak, že by cache tlačila svým partnerům svůj digest.

Konkrétně, pokud chce cache stáhnout digest od svého partnera, pošle HTTP požadavek na URL definované v konfiguračním souboru u dané partnerské cache. Přičemž PET poskytuje svůj digest na URL http://adresa:port/pet_digest a SQUID (současná verze - 2.3.STABLE1)

Pokud už má starý digest stažený, posílám 'If-Modified-Since' požadavek, aby se zbytečně nestahoval ten samý digest ještě jednou. Úspěšná odpověď pak vypadá zhruba takto:

HTTP/1.0 200 OK

Server: PET proxy

Mime-Version: 1.0

Date: Tue, 16 May 2000 21:37:56 GMT

Content-Type: application/cache-digest

Content-Length: 148

Expires: Tue, 16 May 2000 21:38:20 GMT

Last-Modified: Tue, 16 May 2000 21:36:51 GMT

Proxy-Connection: close

 

<následované tělem odpovědi>

Tělo odpovědi se skládá z hlavičky Cache Digestu, což je datová struktura pevné délky specifikující vlastnosti digestu, následované samotným digestem. Hlavička a digest mají dohromady velikost specifikovanou v HTTP Content-Length hlavičce.

Všechna čísla, včetně bitů v digestu a hlavičky, jsou přenášena v 'síťovém' (big-endian, nejvíce významný byte nejdříve) pořadí.

 Formát hlavičky Cache Digestu:



Jméno položky Typ Bytů Funkce - nastaveno v PETu
Current version n 2 Verze tohoto Digestu - 5
Required version n 2 Minimální požadovaná verze - 3
Capacity N 4 Počet URL, která se vejdou do Digestu
Count N 4 Počet URL, která jsou v Digestu
Deletion Count N 4 Počet pokusů o smazání URL z Digestu - 0
Size in bytes N 4 Velikost Digestu v bytech
Bits per entry C 1 Počet bitů na jeden záznam - 5
Hash func dimension C 1 Počet hašovacích funkcí (částí MD5) - 4
Reserved n 2 Rezervováno pro budoucí použití
Reserved N26 104 Rezervováno pro budoucí použití



Kde C: 8 bitový (1 byte) unsigned char n: 16 bitový (2 byty) signed integer N: 32 bitový (4 byty) signed integer

Required version
je minimální verze, kterou dekódovací musí podporovat, aby byl schopen interpretovat digest korektně. Pokud příjemce nepodporuje "Required version", celá odpověď musí být ignorována. PET v hlavičce svého digestu uvádí "Current version", protože digesty v PETu jsou napsané podle specifikace Cache Digestů verze 5. A uvádí "Required version" 3, protože jsem zjistil, že SQUID uvádí jako "Current version" 5 (totéž co PET) a zároveň "Required version" 3.
Rezervované položky
nejsou v současnosti používané a musí být nastavené na nulu.


next up previous contents index
Next: Vytváření digestů Up: Modul Cache Digests Previous: Příklad
Stanislav Pavlicek
2000-06-12