我正在丢失所有缓存....(项目从我的缓存中消失)

Mat*_*ers 2 .net asp.net caching webforms

我目前正在ASP.NET Webforms中开发一个站点.

我正在缓存它所做的事情...使用高/正常/低优先级添加东西..告诉他们留在缓存中2周,1周,4小时可敬

我在每个页面上显示当前缓存项目的数量(出于调试原因).

有时,如果我快速浏览网站,缓存中的项目数量可以达到2000项...但如果我等待5分钟并刷新页面,缓存将减少到20项..(正好在该页面上缓存的内容) )

有什么方法可以找到我们正在发生的事情吗?这是否有原因让我失踪?

我正在运行Win7,4Gb ram,64位,VS10,.net4,

我有4个ram的演出,为什么我的缓存完全空了?

我会说10%的缓存项目大约是4k,其余的将是大约100个字符长的字符串.

编辑:我正在使用Sliding Expiration

编辑:我把它整理出来,有一两件物品非常大而且它们被设置为高优先级..而且其他一些较小的变化解决了我的问题.

Jas*_*ort 9

如果将应用程序池设置为每隔xx分钟回收一次,则告诉它保留在缓存中的时间长短无关紧要.在大多数服务器上,应用程序池默认每1440分钟(24小时)回收一次.除非您持久保存数据,否则您的缓存无法在应用程序池回收中存活.

我坚持不久(几乎从未真正实用).我还设置了应用程序,如果缓存已被清除以重建自己,因为它需要数据 - 不是一次全部.

您还可以使用比应用程序池配置允许的更多RAM,CPU太多等.

如果每次重置应用程序或重新加载Visual Studio时,这都在开发人员计算机上运行,​​那么所有内容也会被删除.

看看你的应用程序池,你可能会看到重置的罪魁祸首.


Wya*_*ett 6

仅仅因为系统具有4GB RAM并不意味着ASP.NET进程可以使用所有这些空间,也不意味着ASP.NET缓存可以有效地使用所有这些空间.正如我所理解并观察过它的野兽一样,如果觉得它变得太满,它就会开始自我清醒,这听起来像是在缓存大量的数据.

跟踪此方法的方法是使用缓存过期回调函数来记录内容.它应该能够让你知道什么是倾倒,什么时候,也许是为什么.