2009-02-10 6 views
10

Предположим, у меня есть приложение ASP.NET работает через несколько веб-серверов за балансировки нагрузки:Каков наилучший метод для вытеснения кеша в ASP.NET?

Могу ли я:

  • Force OutputCache (страницы и/или уровень управления), чтобы истекать в глобальном масштабе?

  • Срок действия кэша данных (т. Е. Кэш.Insert)?

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

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

ответ

7

Есть много способов, чтобы сделать это кэширование истекает, как страницы OutputCache по

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

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

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

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

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

Итак, here's, чтобы упростить мониторинг кеша. Честно говоря, я никогда не использовал его сам, но вы можете попробовать, просто вопрос о добавлении 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

Спасибо за ссылку на кэш aspalliance менеджер. Здорово. – frankadelic

0

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

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