ASP.NET MVC 缓存正在自行清除
ASP.NET MVC Cache is clearing itself
我有一个 ASP.NET MVC 4 应用程序,它是 运行 在装有 IIS 8.5 机器的 Windows 2012 R2 上。有一种我无法弄清楚的奇怪行为。缓存似乎正在自行清除。我所说的缓存是指 MemoryCache.Default
、HttpContext.Current.Cache
以及 OutputCache
。我用谷歌搜索这个问题好几个小时,似乎没有任何问题。你能列出清除缓存的原因吗?我的意思是有一个清单可以用来测试服务器吗?提前致谢。
这些缓存保存在内存中,因此是易失的。它们针对 IIS 产生的用于处理这些请求的 W3wp 进程。
一段时间不活动后,IIS 会关闭进程,因此这些缓存将被清除。
IIS 也会关闭进程(回收应用程序池)
- 1746 分钟后默认 (IIRC)
- 线程使用内存达到设定阈值后
- 缓存也被线程隔离,所以如果你有一个 web farm/web 花园,这些缓存不会共享,同样是 IIRC
如果您需要更长时间地保留这些项目,那么您将需要考虑将对象缓存在持久存储区域中,例如数据库或应用程序状态管理服务器。
我有一个 ASP.NET MVC 4 应用程序,它是 运行 在装有 IIS 8.5 机器的 Windows 2012 R2 上。有一种我无法弄清楚的奇怪行为。缓存似乎正在自行清除。我所说的缓存是指 MemoryCache.Default
、HttpContext.Current.Cache
以及 OutputCache
。我用谷歌搜索这个问题好几个小时,似乎没有任何问题。你能列出清除缓存的原因吗?我的意思是有一个清单可以用来测试服务器吗?提前致谢。
这些缓存保存在内存中,因此是易失的。它们针对 IIS 产生的用于处理这些请求的 W3wp 进程。
一段时间不活动后,IIS 会关闭进程,因此这些缓存将被清除。
IIS 也会关闭进程(回收应用程序池)
- 1746 分钟后默认 (IIRC)
- 线程使用内存达到设定阈值后
- 缓存也被线程隔离,所以如果你有一个 web farm/web 花园,这些缓存不会共享,同样是 IIRC
如果您需要更长时间地保留这些项目,那么您将需要考虑将对象缓存在持久存储区域中,例如数据库或应用程序状态管理服务器。