Какой лучший метод для принудительного истечения кеша в ASP.NET?

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

Могу ли я:

  • Сила OutputCache (страница и/или уровень управления) истекает глобально?

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

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

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

Ответ 1

Существует много способов сократить время кэширования, например, page outputcache на

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

Ответ 2

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

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