Najbolji primjeri iz predmemoriranja u ASP.Netu

Keširanje je strategija upravljanja državama koja se često usvaja u ASP.Netu radi poboljšanja performansi aplikacije minimiziranjem potrošnje resursa u vašem sustavu. Ako se pravilno koristi, može znatno poboljšati izvedbu vaše aplikacije spremanjem stranice wWb u cijelosti ili djelomično, ili čak pohraniti podatke aplikacije u HTTP zahtjeve. Keširanje omogućuje brže generiranje web stranice, a pravilno korištenje predmemoriranja minimizira ili smanjuje pogotke baze podataka ili potrošnju resursa poslužitelja.

Keširanje u ASP.Netu ima sljedeće tri vrste:

  1. predmemoriranje izlaznih stranica
  2. predmemoriranje fragmenata stranice
  3. predmemoriranje podataka

Predmemoriranje izlaza stranice

Ovo je oblik predmemoriranja u ASP.Netu koji sprema kopiju vaše web stranice u predmemoriju memorije, tako da se sljedeći zahtjevi za istu web stranicu mogu dohvatiti izravno iz predmemorije - predmemorirani izlaz šalje se aplikaciji. To znatno poboljšava izvedbu aplikacije. Sljedeći isječak koda pokazuje kako možete implementirati predmemoriranje izlaznih stranica.

Opcija VaryByParam pomaže vam da odredite varijable u Http zahtjevu koje bi trebale novi unos predmemorije. Ostale moguće opcije uključuju: VaryByHeader i VaryByCustom. Također možete odrediti mjesto i trajanje u OutputCache direktivi - pomoću njih možete odrediti mjesto predmemorije, a također i trajanje za koje bi web stranica trebala biti predmemorirana.

Predmemoriranje fragmenata stranice

Predmemoriranje fragmenata stranice strategija je predmemoriranja u kojoj se web stranica dijelom predmemorira - predmemoriraju se samo fragmenti web stranice, a ne cijela web stranica. Možete koristiti istu sintaksu kao predmemoriranje izlaza stranice. Međutim, atribut OutputCache morate primijeniti na korisničku kontrolu umjesto na web stranicu. Predmemoriranje fragmenata korisno je kad biste trebali predmemorirati samo dijelove svoje web stranice - obično u situacijama kada vaša web stranica sadrži kombinaciju uobičajenih i dinamičkih odjeljaka. Kao primjer, možete imati web stranicu koja sadrži kombinaciju stavki izbornika, a također i određene dinamičke odjeljke koje treba često popunjavati i ažurirati iz baze podataka.

Predmemoriranje podataka

ASP.Net izlaže API predmemorije za pohranu podataka u predmemoriju za kasnije preuzimanje. Sintaksa za spremanje podataka u predmemoriju pomoću Cache API-a dana je u nastavku.

Cache["key"] = "value";

Također možete koristiti metode Add ili Insert. Da biste udaljili unos iz predmemorije, možete koristiti metodu Remove () klase Cache. Metoda Insert () klase Cache omogućuje vam određivanje ovisnosti predmemorije. Ovisnost o predmemoriji je strategija koja osigurava da će se, kada se promijene podaci u pohrani podataka (iz koje je predmemorija popunjena), predmemorija odmah ponovno popuniti. Kada se podaci u spremištu podataka promijene, predmemorija će isteći, što će rezultirati ponovnim popunjavanjem predmemorije najnovijim podacima. O tome možete više pročitati iz ovog MSDN članka.

Najbolje prakse

Trebali biste predmemorirati što je češće moguće i pravilno predmemorirati podatke u svakom sloju svoje aplikacije. Kada upotrebljavate predmemoriranje podataka, trebali biste primijeniti odgovarajuću strategiju kako biste osigurali da se podaci u predmemoriji sinkroniziraju s onima u spremištu podataka. Možete iskoristiti distribuirane upravitelje predmemorije kao što je Memcached tako da se vaša strategija predmemoriranja može dobro prilagoditi i osigurati znatne poboljšanja u izvedbi - Memcached možete koristiti za pohranu velikih podataka. Trebali biste osigurati da predmemorirate samo relativno ustajale podatke - nema smisla u predmemoriranju podataka koji bi se s vremenom često mijenjali. Također, podaci za koje je malo vjerojatno da će se ponovno upotrijebiti ne bi se trebali pohraniti u predmemoriju. Ne biste trebali pretjerano koristiti SqlDependency ili SqlCacheDependency.

A sada, znajmo i negativne strane predmemoriranja. Objekt predmemorije dostupan je samo trenutnoj domeni aplikacije. Dakle, ako želite podatke pohraniti u predmemoriju i učiniti ih dostupnima putem web farme, to nije mogućnost. Morali biste iskoristiti distribuiranu predmemoriju kao što je Windows Server AppFabric Caching ili drugi okviri raspodijeljene predmemorije da bi podaci u predmemoriji bili globalno dostupni na web farmi.

Keširanje je moćan mehanizam za poboljšanje performansi aplikacije spremanjem relativno ustajalih podataka u memoriju tako da se isti mogu kasnije dohvatiti iz predmemorije. O ovoj ću temi više razgovarati sa primjerima stvarnog života u svojim budućim postovima ovdje.