1

我有一个托管在 IIS 上的 ASP.NET MVC 3 应用程序。这个应用程序正在使用 MemoryCache 处理内存中的一些数据,以帮助最大限度地减少对我的数据库的访问。我希望这些数据最多可以缓存一天。在我的代码中,我设置了以下内容:

List<MyObject> myItems = GetMyItems();
CacheItemPolicy cachePolicy = new CacheItemPolicy();
cachePolicy.AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(1440));
Cache.Set("myCacheKey", myItems, cachePolicy);

虽然我的缓存似乎正在工作。但是,它似乎并没有在预期的时间内停留在缓存中。是否需要在 web.config 中进行设置,如果有,需要什么设置?如果不是,是否需要设置 IIS 设置以启用更长的缓存持续时间?

4

1 回答 1

1

问题很可能在于您的应用程序池在不使用一段时间后正在回收。当应用程序池被回收时,您在内存中的所有内容都会丢失。

如果您需要更持久的缓存,则需要切换到不在进程中托管的内容。有许多商业和开源缓存服务;我建议选择其中之一。

这里只是一些缓存解决方案:

  1. 共享缓存
  2. AppFabric
  3. NCache
  4. 内存缓存.NET

在其他人中。

于 2012-06-18T11:50:06.453 回答