ASP.NET QuickStart Príručka
Cachovanie dát zo stránok
ASP.NET poskytuje plne funkčný cachovací prostriedok, ktorý môže stránka použiť
medzi HTTP požiadavkami na uchovanie a vyvolanie ľubovoľných objektov. Vyrovnávacia
pamäť ASP.NET je osobitá pre každú aplikáciu a uchováva objekty v pamäti. Životný
cyklus vyrovnávacej pamäte zodpovedá životnému cyklu aplikácie; to znamená, že keď
je aplikácia reštartovaná, je vyrovnávacia pamäť opätovne vytvorená.
Vyrovnávacia pamäť poskytuje jednoduché slovníkové rozhranie, ktoré dovoľuje programátorom
jednoducho umiestniť objekty do vyrovnávacej pamäte a opätovne ich z nej vybrať.
V najjednoduchšom prípade je umiestnenie prvku do vyrovnávacej pamäte také isté,
ako pridanie prvku do slovníka:
VB
Vyberanie dát je veľmi jednoduché. Existencia objektu by mala byť skontrolovaná
pred vyvolávaním dát z vyrovnávacej pamäte, tak ako je to ukázané v nasledujúcom
príklade:
myValue = Cache("mykey")
If Not (myValue Is Nothing) Then
DisplayData(myValue)
End If
VB
Používanie Data Cache
Nasledujúca ukážka zobrazuje jednoduché používanie vyrovnávacej pamäte. Spúšťa databázový
dotaz a cachuje výsledok, ktorý používa počas celého životného cyklu aplikácie.
Po spustení ukážky si všimnite správu v spodnej časti stránky. Po prvej požiadavke
indikuje, že dáta boli výlučne vyvolané z databázového servera. Po obnovení stránka
poukazuje, že bola použitá cachovaná kópia.
VB Data Cache
Ďalší príklad ukazuje cachovaný prvok, ktorý je závislý od XML súboru. Je to podobné
prvému príkladu, až nato, že v tomto prípade sú dáta vyvolávané z dátového zdroja
XML namiesto databázového servera. Keď sú dáta cachované je XML súbor pridaný do
závislosti. Keď je nový záznam pridaný použitím formulára na spodku stránky, je
XML súbor aktualizovaný a cachovaný prvok musí byť opätovne vytvorený.
VB Data Cache 2
Všimnite si, že pre pridanie prvku do závislosti sa používa Cache.Insert
a nahradením objektu CacheDependency odkazujúci na XML súbor. Rovnaký
postup sa používa pre vytvorenie vlastných závislostí.
Cache.Insert("MyData", Source, _
New CacheDependency(Server.MapPath("authors.xml")))
VB
Cachovaný prvok môže byť závislý na jednom alebo viacerých súboroch alebo kľúčoch.
Ako bolo spomenuté predtým, aplikácia môže tak isto nastaviť politiku platnosti
pre cachovaný prvok. Nasledujúci kód nastavuje absolutný čas platnosti vyrovnávacej
pamäte.
Cache.Insert("MyData", Source, Nothing, _
DateTime.Now.AddHours(1), TimeSpan.Zero)
VB
Dôležitým parametrom je zavolanie DateTime.Now.AddHours(1), ktorý vyjadruje,
že platnosť prvku vyprší o 1 hodinu od okamihu, kedy bol vložený. Posledný argument,
TimeSpan.Zero vyjadruje, že neexistuje žiadna relatívna politika platnosti
pre tento prvok.
Nasledujúci kód ukazuje ako nastaviť relatívnu politiku platnosti. Kód vkladá prvok,
ktorému platnosť vyprší 20 minút po poslednom prístupe. Všimnite si použite DateTime.MaxValue,
ktorý ukazuje, že neexistuje absolutná politika platnosti pre tento prvok.
Cache.Insert("MyData", Source, Nothing, DateTime.MaxValue, _
TimeSpan.FromMinutes(20))
VB
Pre aplikácie, ktoré potrebujú viac sofistikovanejšiu funkčnosť, podporuje vyrovnávacia
pamäť ASP.NET očisťovanie, uplynutie platnosti, a závislosť na súbore a kľúči.
Čistenie údajov z vyrovnávacej pamäte
Čistenie znamená, že vyrovnávacia pamäť sa pokúša odstrániť občas používané alebo
nevýznamné prvky v prípade, že pamäť bude obmedzená. Programátori, ktorí chcú kontrolovať
priebeh čistenia, môžu čistiacej jednotke (scavenger) poskytnúť pokyny, keď sú prvky
vložené do vyrovnávacej pamäte, ktoré označujú relatívnu hodnotu vytvorenia prvku
a relatívnu intenzitu, s ktorou sa má k prvku pristupovať, aby ostal v platnosti.
Uplynutie platnosti údajov vo vyrovnávacej pamäti
Uplynutie platnosti dovoľuje programátorom nastaviť cachovaným prvkom ich životnosť,
ktorá môže byť explicitná (napríklad: skonči o 6:00) alebo môže byť relatívna podľa
posledného prístupu k prvku (napríklad: skonči 20 minút po poslednom prístupe k
prvku). Po skončení platnosti je prvok odstránený z vyrovnávacej pamäte a nasledujúce
pokusy o jeho vyvolanie vrátia hodnotu null pokiaľ nie je prvok opätovne vložený
do vyrovnávacej pamäte.
Závislosti vyrovnávacej pamäte
Závislosti vyrovnávacej pamäte dovoľujú, aby bola platnosť cachovaného prvku závislá
na externom súbore alebo na nejakom inom cachovanom súbore. Ak sa závislosť zmení,
cachovaný prvok sa stane neplatným a je odstránený z vyrovnávacej pamäte. Ako príklad
pre použitie tejto závislosti ukážme nasledujúci scenár: aplikácia číta finančné
informácie z XML súboru, ktorý je pravidelne aktualizovaný. Aplikácia spracuje údaje
zo súboru a vytvorí graf objektov reprezentujúci dáta v spracovateľnom formáte.
Aplikácia cachuje dáta a vkladá závislosť na súbore, z ktorého sú dáta čítané. Keď
je súbor aktualizovaný, sú dáta odstránené z vyrovnávacej pamäte a aplikácia ich
môže opätovne prečítať a vložiť aktualizovanú kópiu dát.
ASP.NET 2.0 sprístupnilo triedu System.Web.Caching.CacheDependency pre odvodzovanie,
umožňujúc každému napísať jeho vlastnú implementáciu závislosti vyrovnávacej pamäte.
Vývojom Vašej vlastnej závislosti vyrovnávacej pamäte môžete výhodne využiť mechanizmus
zbavenia platnosti pre zachovanie cachovaného obsahu aktuálneho s údajmi, ktoré
boli použité pre jeho vytvorenie. To je efektívnejší a spoľahlivejší spôsob ako
zaručiť platnosť dát a povoliť synchronizáciu vyrovnávacej pamäte naprieč webovými
farmami ako používať časté ukončenie platnosti.
ASP.NET poskytuje dve možnosti závislosti postavené na CacheDependency: AggregateCacheDependency,
ktorá dovoľuje, aby boli viaceré závislosti zoskupované do komplexných obsahových
typov, ktoré sú závislé na viac ako jednom type zdroja, a SqlCacheDependency,
ktorá opísaná v sekcii SQL Cache Invalidation
.
|