ASP.NET QuickStart Príručka
Cachovanie výstupu stránky
Cachovanie výstupu je výkonná metóda, ktorá zvyšuje priepustnosť požiadaviek/odpovedí
cachovaním obsahu generovaného dynamickými stránkami. Cachovanie výstupu je štandardne
povolené, ale výstup z hocijakej danej odozvy nie je cachovaný pokiaľ nie je podniknutá
explicitná akcia, ktorá spraví odozvu cachovateľnou.
Na vytvorenie odozvy vhodnej pre cachovanie výstupu, musí mať táto platnú politiku
zániku platnosti/kontroly platnosti a verejnú viditeľnosť vyrovnávacej pamäte. Toto
sa dá dosiahnuť použitím buď nízko úrovňového OutputCache API alebo vysoko
úrovňovej direktívy @ OutputCache. Keď je povolené cachovanie výstupu, je
pri prvej požiadavke na stránku GET vytvorený záznam o cachovanom výstupe.
Následujúce požiadavky GET alebo HEAD sú podávané zo záznamu o cachovanom
výstupe pokiaľ cachovaná požiadavka nevyprší. Výstup vyrovnávacej pamäte tak isto
podporuje obmeny cachovaných párov názvov/hodnôt GET alebo POST.
Vyrovnávaca pamäť rešpektuje politiku zániku a kontroly platnosti pre stránky. Ak
je stránka vo vyrovnávacej pamäti a bola označená politikou zániku platnosti, ktorá
označuje, že stránka vyprší o 60 minút od momentu cachovania, je stránka odstránená
z vyrovnávacej pamäte po 60 minútach. Ak je po tomto čase prijatá ďalšia požiadavka,
kód stránky je spustený a stránka môže byť opäť cachovaná. Tento typ politiky zániku
platnosti je nazývaný absolutný zánik platnosti - stránka je platná po nejaký presne
určený čas.
Direktíva Output Cache
Nasledujúci príklad objasňuje jednoduchý spôsob k odozvám výstupu vyrovnávacej pamäte
použitím direktívy @ OutputCache. Príklad jednoducho zobrazuje čas, kedy
bola odozva vygenerovaná. Aby ste videli cachovanie výstupu v akcii, vyvolajte stránku
a všimnite si čas vygenerovania odozvy. Potom obnovte stránku a všimnite si, že
čas sa nezmenil, ukazujúc, že druhá odozva bola podaná z vyrovnávacej pamäti.
VB Output Cache
Nasledujúca direktíva aktivuje cachovanie výstupu pri odozve:
<%@ OutputCache Duration="60" VaryByParam="none"%>
Táto direktíva jednoducho ukazuje, že stránka by mala byť cachovaná po dobu 60 sekúnd
a že stránka sa neobmeňuje žiadnym z parametrov GET alebo POST. Požiadavky
doručené pokiaľ je stránka cachovaná sú vyplnené z vyrovnávacej pamäte. Po 60 sekundách
je stránka odstránená z vyrovnávacej pamäte; nasledujúca požiadavka je spracovaná
explicitne a opäť cachuje stránku.
Samozrejme, že v predchádzajúcom príklade sa ušetrilo len veľmi málo roboty vďaka
cachovaniu výstupu. Nasledujúci príklad ukazuje rovnakú metódu pre cachovanie výstupu,
ale dotazuje databázu a zobrazuje výsledky v mriežke.
VB Output Cache 2
Obmeny parametrami
Tu je aplikácia nepatrne upravená pre povolenie užívateľovi selektívne sa dotazovať
na autorov v rôznych štádiách. Tento príklad objasňuje cachovanie požiadaviek obmenených
pármi názvov/hodnôt v reťazci dotazu použitím atribútu VaryByParam z direktívy
@ OutputCache.
<%@ OutputCache Duration="60" VaryByParam="state" %>
Pre každé štádium v súbore dát existuje spojenie, ktoré posiela požadované štádium
ako časť reťazca dotazu. Aplikácia potom vytvorí potrebný dotaz na databázu a ukáže
autorov patriacich iba k označenému štádiu.
Všimnite si, že keď prvý krát kliknete na prepojenie k danému štádiu, vytvorí sa
na spodnej strane stránky časová známka (timestamp). Keď je odvtedy opätovne podaná
požiadavka o štádium počas jednej minúty, dostanete originálnu časovú známku (timestamp)
označujúcu zmenu požiadavky.
VB Output Cache VaryByParam
SQL Cache Notification Novinka v 2.0
V predošlom príklade boli dáta cachované po dobu 60 sekúnd nezávisle od toho, či
niečo zmenilo dáta v databáze. SQL cache invalidation Vám povoľuje vytvoriť záznam
vo vyrovnávacej pamäti závislý na databáze tak, že tento záznam bude zrušený ak
budú dáta v databáze zmenené. Pre bližšie detaily si pozrite stránku o
SQL Cache Notification.
Post-cache Substitution Novinka v 2.0
V ASP.NET 1.0 stránky, ktoré boli statické, ale obsahovali malú dynamickú oblasť,
ako napríklad meno užívateľa alebo presný čas, boli často nútené buď nepoužívať
cachovanie alebo rozdeliť stránku na viacero užívateľských ovládacích prvkov cachovaným
fragment cachingom. ASP.NET 2.0 povoľuje týmto stránkam využiť výhody cachovania
výstupu, povolením cachovaným stránkam vložiť dynamický obsah pri každej požiadavke.
V príklade nižšie vkladá stránkam, cachovaná pri výstupe, dynamické spätné volanie
(callback) do statickej metódy, ktorá vracia aktuálny dátum pomocou Response.WriteSubstitution
API. Toto spätné volanie (callback) spúšťa každú požiadavku a výsledky vkladá do
reťaze cachovaných odoziev, ktorá je podávaná z vyrovnávacej pamäte.
VB Post-Cache Substitution
Nasledujúci príklad uskutočňuje presne rovnakú činnosť ako ukážka vyššie, ale používa
ovládací prvok asp:Substitution pre vloženie dynamického obsahu.
VB Substitution Control
Používanie Cache API
Aplikácie, ktoré chcú viac kontroly nad HTTP hlavičkami týkajúce sa cachovania môžu
využiť funkčnosť poskytovanú triedou System.Web.HttpCachePolicy. Nasledujúci
príklad ukazuje kód ekvivalentný k direktívam stránky použitým v predošlých príkladoch.
Response.Cache.SetExpires(Now.AddSeconds(60))
Response.Cache.SetCacheability(HttpCacheability.Public)
VB
Pre vytvorenie pohyblivej politiky zániku platnosti (sliding expiration policy),
kde sa čas zániku platnosti znova spúšťa pri každej novej požiadavke, nastavte vlastnosť
SlidingExpiration tak, ako je to ukázané v nasledujúcom kóde.
Response.Cache.SetExpires(Now.AddSeconds(60))
Response.Cache.SetCacheability(HttpCacheability.Public)
Response.Cache.SetSlidingExpiration(True)
VB
Poznámka: Pri povolení pohyblivého zániku platnosti (SetSlidingExpiration(true)
) generuje požiadavka vytvorená na pôvodný server odozvu. Pohyblivý
zánik platnosti je využiteľný v scenároch, kde existujú downstream caches, ktoré
uspokojujú klientové požiadavky, ak ešte platnosť obsahu nevypršala, bez vyžiadania
obsahu z pôvodného servera.
|