Šuplík Honzy Hučína

Skok na navigaci (menu)

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.

Komentovaný článek

Internet a vše kolem
28. 7. 2004

RSS při reloadu keš ignoruje

Občas se sejdou nezávisle na sobě výborné články, které vzájemnou kombinací nesmírně posílí svůj účinek. Ovšem bohužel teoreticky. Přes veškerou snahu mi praktická realizace nefunguje.

Martin Kopta v článku Když se sdílení odkazů změní v útok DoS upozornil na narůstající zátěž serverů ze strany čteček RSS. Pokud čtečka obnovuje zdroje příliš často a pokud se na server takových čteček dívá mnoho, může narůst zátěž do nepříjemné výšky. Zkusil jsem si zaznamenávat, jak často se stahuje RSS soubor na tomto blogu, a výsledek byl pro mě šokující – denně to je v průměru přibližně 600 stažení! Může za to hlavně jeden RSS Point 1, který netrpělivě špehuje každých 6 minut.

Zdálo se, že řešení nabídl excelentní Yuhůův překlad kešovacího tutoriálu neboli návodu, jak ovládat a využívat webové keše a odlehčit tak serverům. Však to taky Yuhů explicitně napsal do diskuse k článku Kolaps RSS (2.) na conBLOGu.

A ono mi to na ty mrchy čtečky prostě nezabírá. Hrál jsem si s hlavičkami Expires, Cache-Control a Last-Modified, zkoušel je různě nastavovat, ale málo platné, RSS soubor se mi generuje pokaždé znova, jakmile ho čtečka zavolá. Přitom se soubor evidentně kešoval, zkoušel jsem si zavřít a otevřít prohlížeč a zadat znovu adresu – dodal kešnutou verzi. Dokonce se mi podařilo různým nastavením kešovat pro každý prohlížeč zvlášť nebo na proxy společně. Nicméně jakýkoliv reload (F5, Ctrl-R, Ctrl-F5) v prohlížeči se choval stejně: nechal server vygenerovat stránku znova a na keše se vykašlal.

Mám podezření, že v tom je problém kešování pro čtečky. Při reloadování stránky se prostě na keše nehraje, hlavička nehlavička, čerstvost nečerstvost. Servere, koukej vygenerovat a znovu dodat soubor.

Asi budu muset zvolit jiný postup, například černou listinu příliš často reloadujících čteček.

Vložit vlastní komentářNávrat k článkuRSS komentářů tohoto článku

Komentáře

[1] 28. 7. 2004, 11:13 – Dagi (Odkaz)

Proc negenerujete RSS do staticke stranky nebo si nudelate vlastni cache na serveru, tak aby nebylo nutne vzdy obsah znovu generovat?

[2] 28. 7. 2004, 12:51 – Pavel SPS

No tak to asi vetsina navstevovanych webu ma :)

coz nic nemeni na faktu, ze kam driv clovek prisel 3x za den, tak ted prijde treba 10x za hodinu. A zatimco nekdo driv chodil na vas web dvakrat tydne, ted je tam co pul hodiny... pocet dotazu - i kdyz na statickou stranku - vyrazne vzrostl a vyhledove poroste jeste dal.

O tom to IMHO je, ne?

[3] 28. 7. 2004, 13:09 – Honza Hučín (Odkaz)

[1] Nevim, zda vlastní keš smím na PIPNI.CZ mít, obávám se, že ne. A kdybych ji měl, bude se chovat jinak než zmiňované keše? Mám o tom pochybnosti, ale protože do toho příliš nevidím, možná máte pravdu a bylo by to řešení.
Generování RSS do statické stránky jsem zvažoval. Naprogramovat to může být zajímavé samo o sobě a poté, co se ukázalo, že jednoduchý trik s hlavičkami nevyšel, se tudy nejspíš vydám. Nicméně to IMHO znamená, že se sníží zátěž databáze, ale počet http požadavků na server ne. Je to tak?

[4] 28. 7. 2004, 13:41 – Dagi (Odkaz)

"Servirovani" statickeho obsahu je pro server z vykonovoho hlediska mnohonasobne prijatelnejsi nez generovani obsahu s kazdym pozadavkem. Pocet HTTP pozadavku zustane, ale jejich vyrizeni uz nebude pro server tak narocne.

Jeste se vratim k tem RSS cteckam, bylo by zajimave sledovat, jak se jednoltive typy ctecek chovaji k HTTP hlavickam pro rizeni cacheovani.

[5] 28. 7. 2004, 14:18 – PePPer

To, ze vase ctecka ignoruje hlavicky ktere dostava od serveru, neni chyba serveru.

[6] 28. 7. 2004, 14:20 – Honza Hučín (Odkaz)

[4] Ad čtečky a kešování - sleduju IP a user-agenta u každého vygenerování, takže by se to dalo analyzovat a určitě to zkusím, až budu mít dostatek dat. Yuhů v citovaném příspěvku do diskuse na conBLOGu ale uvádí, že čtečky se hlavičkami příliš nezabývají, hlavičky mají podle něho smysl hlavně pro kešování.

[7] 28. 7. 2004, 14:28 – PePPer

[6] ted Vam moc nerozumim. Kdyz na to ty ctecky kaslou, tak k zadnemu cachovani nedojde. Hlavicku posila server a klient se podle hlavicek rozhoduje pri dalsim stahovani. Ne?

Spravne hlavicky = inteligentni cachovani
Spatne hlavicky = zadne cachovani
Nezajem o hlavicky = zadne cachovani

[8] 28. 7. 2004, 14:41 – Honza Hučín (Odkaz)

[7] Moc tomu nerozumím, podle Yuhůa jsem to pochopil takto:
Dokument s hlavičkami posílá server, ke klientovi to jde přes nula až hodně keší. Každá keš koukne na hlavičky a pokud jí to hlavičky dovolí a je tak nastavená, uloží si kopii dokumentu. Když klient příště žádá stejný dokument, každá keš v cestě by se měla podívat, jestli má kopii dokumentu, která je platná (to určuje hlavička Expires, resp. Cache-Control). Když jo, pošle klientovi kopii a http požadavek klienta už dál nepustí.
Otestoval jsem si, že se RSS kešovalo, a to jak v keši prohlížeče, tak na proxy. Při požadavku z prohlížeče keš poslala uloženou kopii a RSS se negenerovalo znovu. Pokud jsem ale v prohlížeči dal reload (F5, Ctrl-R), vygenerovalo se RSS znovu.
V databázi, kam se píše každé vygenerování RSS, byly i potom záznamy po šesti minutách na stejné IP + user-agenta.
Z toho mi plyne:
- RSS se kešovalo
- reload čtečky RSS stejně jako reload prohlížeče způsobí nové vygenerování souboru bez ohledu na nastavení hlaviček a na stav keší
- a tudíž pouhými hlavičkami nelze zabránit, aby se každý reload ve čtečce dostal až na server a byl obloužen až tam.

[9] 28. 7. 2004, 17:28 – PePPer

[8] drive se tak prohlizece nechovali. Minimalne svoji vlastni cache IE prepsalo az pri stisku Shift+F5. Obcas s tim byl problem. Bohuzel to nemuzu testovat, tak jako vy, behem dne. Snad vecer. V tom pripade by bylo dobre vymyslet cachovani uz primo na serveru. Vytvorit to rss staticky a nezatezovat(negenerovat) server pri kazdem requestu a spolehat na to, ze si s tim poradi cache cestou a ulehci Vam.

Ono zase na druhou stranu to RSS(ctecka) prahne vzdy po tom nejaktualnejsim souboru. Uz podle toho k cemu je urcene. Doporucuji tedy RSS soubor udelat jako staticky a na serveru takovemu souboru dat spravne hlavicky.

Zvlaste pokud se to RSS meni treba jen dvakrat za den.

[10] 1. 8. 2004, 20:21 – Yuhů (Odkaz)

Honzo, myšlenka je správná, ale testuješ to chybně. Problém je v tom refreshování.

Když dáš v prohlížeči refresh, odešle se na server požadavek, který výslovně obsahuje hlavičku
Pragma: no-cache
(nejsem si nyní jistý zápisem), která víceméně znamená, že se mají všechny keše obcházet. Proto se ti zdá, že to nefunguje.

Simulovat chování skutečné čtečky prohlížečem můžeš maximálně tak, že napíšeš adresu a zmáčkneš enter. Lepší je připojit se telnetem přes net a poslat mu GET požadavek.

Ještě bych chtěl zdůraznit, že keš přímo u klienta nemá na omezování počtu přístupů moc vliv, zejména z toho důvodu, že průměrná čtečka jakožto klient žádnou keš nemá. Vtip je v tom, že se to může docela kešovat na *serverových* keších (což v logu prostě nepoznáš).

600 požadavků denně, jakkoli jde o číslo lokálně úctyhodné, je s prominutím prd, kterým nemá smysl se vůbec zabývat. Při statisících požadavků se ale příznivý vliv serverových keší podle mého odhadu jistě projeví.

[11] 2. 8. 2004, 22:15 – Honza Hučín (Odkaz)

Ad [10]: Díky za doplnění informace o refreshování, to jsem nevěděl. Ale obávám se, že jsi asi nepochopil, v čem vidím hlavní problém.
Každé vygenerování RSS souboru jsem zapsal do databáze. Ze zápisů vyplývalo, že se RSS stránka generovala pokaždé znovu (pro jednu IP adrsu dokonce co 6 minut), bez ohledu na nastavené hlavičky. Z toho jsem usoudil, že se RSS čtečka při reloadu na keše vykašle a vygeneruje di stránku znovu, i když se ve stránce posílá Tebou doporučovaná hlavička Cache-Control: max-age:300.
To refreshování prohlížečem jsem nezkoušel jako simulaci čtečky, ale jako analogii - srovnání, zda podobná akce jiným prostředkem přinese podobné výsledky. A přinesla, neboť se RSS soubor také vygeneroval znovu.
Ještě jednou: z tvrdých dat mi vyplývá, že u dynamicky generovaného RSS souboru nelze hlavičkami zajistit, aby se soubor kešoval a negeneroval tudíž znovu při každém reloadu čtečky. Možná to je problém čtečky, to nevím.

K tomuto článku není možné vkládat komentáře.

© Honza Hučín 2004–6

Šuplík běží na PIPNI.CZ. Díky!

sber.cermat.cz

RSS Šuplíku

RSS komentářů – souhrnně

U každého článku je samostatný RSS kanál pro komentáře.

Výběr článků

Posledních 10 článků

nebo podle data:

nebo hledání fulltextem:

Archiv všech článků

Poslední komentáře

Zabili mě, parchanti [2]

8. 8. 16:48 | Pepa

Cestou kolem blogu [2]

7. 8. 21:26 | Honza Hučín

Cestou kolem blogu [1]

7. 8. 21:02 | Honza

Vrtulník nad hlavou [3]

6. 8. 14:29 | Pepa

Taková hra na volby [1]

3. 8. 18:29 | Honza

Nejčtenější

Žádné údaje nejsou k dispozici.

O mně

*1967, absolvent MFF UK v Praze (1991)

statistik, analytik, programátor, učitel, hudebník

nyní Ústav pro informace ve vzdělávání

Životopis (RTF)

Napište mi