Най-добри практики за кеширане в ASP.Net

Кеширането е стратегия за държавно управление, често приемана в ASP.Net за подобряване на производителността на приложението чрез минимизиране на потреблението на ресурси във вашата система. Ако се използва правилно, той може значително да подобри производителността на вашето приложение, като съхранява страницата wWb изцяло или частично, или дори съхранява данните на приложението в HTTP заявките. Кеширането позволява уеб страницата да се изобразява по-бързо и правилното използване на кеширането минимизира или намалява посещенията на базата данни или консумацията на ресурси на сървъра.

Кеширането в ASP.Net е от следните три вида:

  1. кеширане на изхода на страницата
  2. кеширане на фрагменти на страници
  3. кеширане на данни

Кеширане на изхода на страницата

Това е форма на кеширане в ASP.Net, която съхранява копие на вашата уеб страница в кеша на паметта, така че последващите заявки за същата уеб страница могат да бъдат извлечени директно от кеша - кешираният изход се изпраща на приложението. Това значително подобрява производителността на приложението. Следният кодов фрагмент показва как можете да приложите кеширане на изхода на страницата.

Опцията VaryByParam ви помага да посочите променливите в Http Request, които ще се нуждаят от нов запис в кеша. Други възможни опции включват: VaryByHeader и VaryByCustom. Можете също така да посочите Местоположение и Продължителност в директивата OutputCache - можете да ги използвате, за да посочите местоположението на кеша, а също и продължителността, за която уеб страницата трябва да бъде кеширана съответно.

Кеширане на фрагменти на страници

Кеширането на фрагменти на страници е стратегия за кеширане, при която уеб страницата се кешира частично - кешират се само фрагменти от уеб страницата, а не цялата уеб страница. Можете да използвате същия синтаксис като кеширането на изхода на страницата. Трябва обаче да приложите атрибута OutputCache към потребителска контрола вместо към уеб страницата. Кеширането на фрагменти е полезно, когато трябва да кеширате само части от вашата уеб страница - обикновено в ситуации, когато вашата уеб страница съдържа комбинация от общи и динамични раздели. Като пример можете да имате уеб страница, която съдържа комбинация от елементи от менюто, а също и определени динамични раздели, които често трябва да се попълват и актуализират от базата данни.

Кеширане на данни

ASP.Net излага API на кеша, за да съхранявате данни в кеша за извличане по-късно. Синтаксисът за съхраняване на данни в кеша с помощта на API на кеша е даден по-долу.

Cache["key"] = "value";

Можете също да използвате методите Add или Insert. За да отдалечите запис от кеша, можете да използвате метода Remove () на класа Cache. Методът Insert () на класа Cache ви позволява да зададете зависимост от кеша. Зависимостта на кеша е стратегия, която гарантира, че когато данните в хранилището за данни (от които е попълнен кешът) се променят, кешът ще бъде незабавно повторно попълнен. Когато данните в хранилището за данни се променят, кешът ще изтече, което ще доведе до повторно попълване на кеша с най-новите данни. Можете да прочетете повече за това от тази статия на MSDN.

Най-добри практики

Трябва да кеширате възможно най-често и да кеширате данните правилно във всеки слой на вашето приложение. Когато използвате кеширане на данни, трябва да приложите правилна стратегия, за да сте сигурни, че данните в кеша са синхронизирани с тези в хранилището на данни. Можете да се възползвате от разпределени кеш мениджъри като Memcached, така че стратегията ви за кеширане също да може да се мащабира добре и да осигури значителни печалби от производителността - можете да използвате Memcached за съхраняване на големи данни. Трябва да сте сигурни, че кеширате само относително остарели данни - няма смисъл да кеширате данни, които да се променят често с течение на времето. Също така, данните, които е малко вероятно да бъдат използвани повторно, не трябва да се съхраняват в кеша. Не трябва да използвате прекомерно SqlDependency или SqlCacheDependency.

И сега, нека да знаем и недостатъците на кеширането. Обектът кеш е достъпен само за текущия домейн на приложението. Така че, ако искате да съхранявате данни в кеша и да ги правите достъпни през уеб ферма, това не е възможност. Трябва да използвате разпределен кеш като Windows Server AppFabric Caching или други рамки за разпределено кеширане, за да имате данните в кеша глобално достъпни в уеб ферма.

Кеширането е мощен механизъм за повишаване на производителността на приложението чрез съхраняване на относително остарели данни в паметта, така че същите да могат да бъдат извлечени от кеш паметта по-късно. Ще обсъдя повече по тази тема с примери от реалния живот в следващите ми публикации тук.