/ / Кеширане на профили от SqlProfileProvider - ProfileManager.GetAllProfiles резултат - asp.net, caching, sqlprofileprovider

Кеширане на профилите от SqlProfileProvider - ProfileManager.GetAllProfiles резултат - asp.net, caching, sqlprofileprovider

Използвам SqlProfileProvider на един от моите уебсайтове и на една страница трябва да извлека целия списък с профили (това е интранет).

Методът, който използвам, е ProfileManager.GetAllProfiles (). Проблемът е, че ефективността му е наистина лоша и забавя значително уебсайта.

Затова мислех да кеширам резултата от извикването на метода в обхвата на приложението като DataTable (така че мога да филтрирам / търся също така).

Проблемът ми е, че имам няколко сървъратази webapp и бих искал кеша да бъде синхронизиран. Започнах да използвам memcached, но аз бях отложен от някои проблеми (оттам се връщам към мисленето в кеширането в обхвата на приложението).

Така че, тук са моите въпроси:

  • Би ли било ефективно да се съхранява DataTable, съдържащ профилите в обекта Application? Или, възможно ли е да се съхраняват обекти в кеша и да са достъпни за всички клиенти / браузъри?
  • Възможно ли е да добавите (кеш) Cache Depedency към този кеш?

Отговори:

1 за отговор № 1

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

Кеширането на страница или фрагмент е най-ефективната техника за кеширане, тъй като противно на кеширането на вашия модел (DataTable или каквото и да е) не плащате цената на HTML изобразяването.