【发布时间】:2016-10-07 15:23:42
【问题描述】:
我最近为使用MemoryCache 的多个网站设置了一些缓存。我要添加的项目是一个数据集,从添加之日起绝对过期 12 小时。不过我想知道的是,有没有办法手动清除缓存,比如重置 IIS?
我找不到任何明确指定将清除内存缓存的内容。
这背后的原因是,如果缓存被清除,我需要测试数据库中刷新的数据是否按预期拾取。目前,它似乎并没有为所有网站清除,这似乎很奇怪。所以我需要弄清楚这是否可能是应用程序池无法正常重启等问题。
【问题讨论】:
-
这里的答案是基本上“是的,只要您的应用程序池不再存在/重新启动,进程内/应用程序域内的内存就会被烤掉” - 那在
MemoryCache的文档中不会明确说明,但它是流程生命周期的逻辑结果。您的测试是否表明其他情况? -
或者,您可以开发一个基本的应用内或独立功能来清除缓存并扩展您的测试
-
有人回答了这个问题。 stackoverflow.com/questions/15037050/…
-
@MarcGravell - 好吧,我不这么认为。最初的想法是这可能是因为使用此缓存的 2 个网站彼此不一致。 1 显示重置后的新刷新数据,而另一个没有。我目前的理论是 IIS 重置实际上并没有重新启动 1 个应用程序池,即使它说“已启动”,因为在手动进入该应用程序池并停止它之后,它不会重新启动。终于成功了,然后数据就通过了。
-
简短回答否,请重新启动 AppPool。
标签: c# memorycache iisreset