1

我正在使用 asp.net mvc3。我们的应用大量使用 HttpRuntime.Cache 将数据存储在 Web 服务器的内存中,以减少数据库调用。

我的问题是,每次我在本地运行应用程序(Visual Studio 中的 F5)时,缓存似乎都被清除了,导致从数据库中完全重新加载所有数据。即我运行一次,从数据库中获取数据然后停止。如果我在几秒钟后再次运行,缓存似乎已失效并且数据库调用再次发生。我的超时时间都在未来,所以不确定这里发生了什么。

我真的只想在缓存真的为空时获取数据,而不是每次在VS中按F5。有没有办法关闭每次我在本地运行时清除缓存的设置?

谢谢!

4

3 回答 3

2

每次停止调试时,它都会杀死存储缓存的应用程序域。您对此无能为力,因为要重新编译应用程序并启动新应用程序,您必须构建一个新的 AppDomain。

于 2012-10-29T01:50:55.380 回答
2

如果您想在编译后保留缓存,我建议您使用其他缓存框架(例如AppFabricmemcached )将缓存置于进程之外。这些框架使用分布式缓存将缓存存储在进程之外,从而避免每次编译时缓存失效。

于 2012-10-29T02:13:48.317 回答
1

没有办法阻止这种情况。当您在 VS 中停止调试器然后再次重新附加调试器时,它将回收工作进程。工作进程中缓存的任何内容都将被刷新,因为该进程将重新启动。

于 2012-10-29T01:50:41.977 回答