Tento blog je v současné době uzavřen.
Pokračování blogu na bloguje.cz jsem zrušil. Pokud budu někdy pokračovat, bude to spíš tady.
Můj relativně nedávný článek o tom, že se kešování dynamicky generovaných RSS souborů míjí účinkem, vyvolalo debatu a poněkud nedůvěřivé reakce. Tak jsem si prošel záznamy v databázi a na jejich základě mohu odpovědně prohlásit, že posílání hlaviček Expires nebo Cache-control při dynamickém generování RSS souboru je nanic.
O co přesně jde? Soubor RSS jsem nechával generovat dynamicky pomocí PHP skriptu. Ten sáhl do databáze článků a vygeneroval validní RSS stránku. Jelikož jsem chtěl ulehčit serveru, rozhodl jsem se využít výborný Kešovací návod. Od 27. 7. ráno jsem nechával na začátku souboru posílat hlavičku Expires, o 24 hodin později jsem změnil hlavičku na Cache-control. V obou případech byly hlavičky nastavené tak, že označovaly dokument jako platný na následující 4 hodiny od okamžiku vygenerování. 29. 7. ráno jsem hlavičky zrušil a vrátil se k verzi bez kešovacích hlaviček.
Ověřil jsem si, že se soubor kešoval. Pokud jsem zadal do prohlížeče znovu adresu dynamického RSS souboru, se zapnutými hlavičkami mi dodal starší verzi (to jsem poznal podle lastBuildDate, které se do RSS dokumentu generovalo také dynamicky jako čas vygenerování).
Celé jsem to sledoval pomocí databáze, do níž jsem každé generování RSS souboru zaznamenával, a to včetně IP, ze které přišel požadavek.
Záznamy v databázi mezi 26. a 29. 7. jsem procházel po jednotlivých IP. Zjišťoval jsem intervaly mezi jednotlivými vygenerováními RSS souboru z příslušné IP adresy. Pokud by kešování fungovalo, měly by se 27. a 28. 7. intervaly prodloužit na 4 hodiny. Všech prvních sedm zkoumaných IP se ale chovalo stejně – žádné prodloužení intervalů se nekonalo. Žádná změna v chování nebyla patrná ani u dalších čtyř namátkově vybraných IP, proto jsem zbylé IP (relevantních jich zbývalo přibližně 15) už ani neanalyzoval. Nabízím vám pro čtyři z nich grafy délky intervalů v závislosti na čase. (Odlehlá hodnota nad horním okrajem grafu je velmi dlouhý interval způsobený patrně vypnutím čtečky.)
První graf
Druhý graf
Třetí graf
Čtrvtý graf
Z grafů je zřejmé, že pokud byla čtečka aktivní, byl pro ni RSS soubor opakovaně generován bez ohledu na změnu hlaviček. Jinými slovy, přítomnost a nastavení hlaviček Expire a Cache-control v dynamicky generovaném souboru sice umožnilo kešování kdesi po cestě k uživateli (při přístupu z prohlížeče se keš využila), ale RSS čtečky to ignorovaly a požadovaly vždy nové vygenerování souboru.
Je možné, že při použití serverové keše by výsledky byly jiné, ale to neumím v tuto chvíli posoudit.
Doporučení? U RSS se nespoléhejte na kešování. Lepší řešení je vést soubor RSS jako statický a generovat ho buď ručně, nebo automaticky spouštěným skriptem.
Další články si můžete vyhledat v jednotlivých přihrádkách, případně podle data.
© Honza Hučín 2004–6
Šuplík běží na PIPNI.CZ. Díky!
8. 8. 16:48 | Pepa
7. 8. 21:26 | Honza Hučín
7. 8. 21:02 | Honza
6. 8. 14:29 | Pepa
3. 8. 18:29 | Honza
*1967, absolvent MFF UK v Praze (1991)
statistik, analytik, programátor, učitel, hudebník