在 ASP.NET 中强制缓存过期的最佳方法是什么?

2024-01-05

假设我有一个 ASP.NET 应用程序在负载均衡器后面的多个 Web 服务器上运行:

Can I:

  • 强制 OutputCache(页面和/或控制级别)全局过期?

  • 强制数据缓存(即Cache.Insert)过期?

  • 从中央位置监控 ASP.NET 缓存使用情况(密钥、RAM 等)?

一种可能的解决方案是让每次使用缓存时检查文件依赖性是否发生变化。该文件可能会被触及,这将使所有缓存过期。但是,这要求开发人员在所有代码中包含依赖项。他们是更好的解决方案吗?


有很多方法可以使这些缓存过期,例如页面输出缓存

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

基于时间的依赖性只是使项目在定义的时间点过期。

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

现在说到监控缓存,除非有关于缓存的API告诉你,否则没有直接的办法。

您当然可以枚举缓存、键值对,然后计算存储的每个项目的大小。听起来并不容易吧?

So here's http://www.aspalliance.com/CacheManager/Default.aspx使您的缓存监控变得轻松。坦率地说,我自己从未使用过它,但你可以尝试一下,只需向你的应用程序添加一个 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET 中强制缓存过期的最佳方法是什么? 的相关文章

随机推荐