První viditelnou změnou je úprava RSS exportu, odedneška se budou
v hlavním feedu zobrazovat celé články. Pokud chcete v mém feedu
i nadále pouze perexy, použijte adresu http://feeds.feedburner.com/rarous/weblog.
Je to experiment, ve kterém si chci ověřit, jaký vliv to bude mít na
návštěvnost – čtenost článků. Druhým důvodem je Technorati – doufám, že tak začne
indexovat tagy.
V rámci optimalizace výkonu homepage jsem všechny
agregované feedy hodil do FeedBurneru,
který jim dokáže nastavit cachovací hlavičky a hlavně ETag, kterej např.
google nikam nedává. Navíc má mnohem kratší odezvy.
Teď mám na hlavní stránce celkem tři úrovně cachování.
- Veřejné. Stránka má nastavené cahování u klienta a po
cestě na dvě minuty – její rychlejší aktualizaci nečekám a je to
spíš ochrana proti zběsilému refreshování.
- Output cache na serveru. Využívám cachovacího mechanismu
ASP.NET a vyredrovaná stránka se na serveru cachuje 5 minut. To má výhodu
v tom, že se posílá odpověď 304, když se obsah nezměnil.
- Cachování agregovaných dat. Když načtu feed, uložím si ho
pod jeho ETagem do cache na 45 minut. Při dalším dotazu se pošle požadavek
HEAD a stáhnou se jen hlavičky. Pokud se změnil ETag, tak ho v cache nenajdu
a musím data načíst GETem.
Myslím, že teď je to celkem účinné, ale stejně ještě přijde časem
jedna změna, kdy se o načítání feedů nebude starat Controller, ale na
pozadí poběží task, který bude agregovat podobně jako služba Weblogy.cz.
Velmi často se ve zdrojových kódech HTML stránek potkávám se
zajímavým mýtem a to s následujícím tagem:
<meta http-equiv="pragma" content="no-cache">
Autor se tím pravděpodobně pokouší docílit toho, aby se jeho stránka
necachovala. Přejdu-li to, že vypnutí cachování je nesmysl už z pohledu
škálování výkonu webové aplikace, tak stejně užití pragmy nemá
hlubšího významu.
Proč je použití
Pragma:no-cache nesmysl
- Hlavička
Pragma s hodnotou no-cache je součástí
specifikace HTTP 1.1 z historických důvodů a je dnes
plně nahrazena hlavičkou Cache-Control.
- Hlavička
Pragma je pouze hlavičkou
požadavku a v odpovědi nemá opodstatnění.
Hlavičku Pragma:no-cache posílali klienti HTTP/1.0 když nechtěli dostat
cachovanou odpověď z lokální nebo proxy cache, ale přímo od serveru,
který volali. Posílat ji tedy v odpovědi (natož v HTML) nemá žádný
význam. Někdo by mohl podotknout, že mu to funguje. Mícrosoft na to říká:
strkejte si pragmu do HTML, ale my vás stejně budem cachovat. Mozilla raději
řídí cachování
pomocí HTTP hlaviček a tento tag také ignoruje.
Závěr
Nejprve si rozmyslete, zda je pro vás zakázání cachování opravdu
přínosné – v 99% případů nebude. Pokud stejně nebudete chtít
cachovat (každý požadavek bude váš server muset vždy zpracovat, bude muset
protéct po vaší lince atd.), posílejte HTTP hlavičku
Cache-control s hodnotou no-cache. Vkládání do
meta stránky nemá opodstatnění, zbytečně tak zvětšíte opověď a
prohlížeče to stejně většinou ignorují.
Tagy: HTML, Pragma, Cache