Каков наилучший способ принудительного истечения срока действия кэша в ASP.NET? - PullRequest
10 голосов
/ 10 февраля 2009

Предположим, у меня есть приложение ASP.NET, работающее на нескольких веб-серверах за балансировщиком нагрузки:

Могу ли я:

  • Принудительно ли использовать OutputCache (уровень страницы и / или управления) для глобального истечения срока действия?

  • Принудительно завершить кэш данных (т.е. Cache.Insert)?

  • Мониторинг использования кэширования ASP.NET (ключи, ОЗУ и т. Д.) Из центрального расположения?

Одним из возможных решений было бы, чтобы при каждом использовании кэша проверялась зависимость файла от изменений. К файлу можно прикоснуться, что приведет к истечению срока действия всего кэша. Однако это требует от разработчиков включения зависимости во весь их код. Это лучшее решение?

Ответы [ 3 ]

8 голосов
/ 11 февраля 2009

Существует множество способов истечения срока действия кэширования, например, выходной кэш страницы

.
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

Временная зависимость просто истекает срок действия элемента в определенный момент времени.

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetSlidingExpiration(true);

Теперь, когда речь заходит о мониторинге кеша, если в кеше нет API для прямого сообщения, то прямого пути нет.

Конечно, вы можете перечислить кэш, пары ключ-значение и затем вычислить размер каждого сохраняемого элемента. Звучит не так просто, верно ??

Итак, вот , чтобы упростить мониторинг кеша. Откровенно говоря, я никогда не использовал его сам, но вы можете попробовать, только вопрос добавления DLL в ваше приложение.

А вот что-то для просмотра ключей кеша,

' display contents of the ASP.NET Cache
If Cache.Count > 0 Then    
  cc.Append("<b>Contents of the ASP.NET Cache (" _    
          & Cache.Count.ToString() & " items):</b><br />")    
  For Each item As Object In Cache    
    cc.Append("Key:'" & item.Key & "' Type:" _    
            & item.Value.GetType().ToString() & "<br />")    
  Next    
Else    
  cc.Append("<b>ASP.NET Cache is empty</b>")    
End If
0 голосов
/ 31 января 2013

http://msdn.microsoft.com/en-us/library/y18he7cw(v=vs.100).aspx

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
0 голосов
/ 09 марта 2009

С Tek-Tips (подробные объяснения читайте по ссылке)

Response.Expires = 15
Response.ExpiresAbsolute = Now() - 2
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "private"
...