缓存过期未按预期工作

Fab*_*ler 6 c# asp.net iis caching

我正在使用HttpContext.Current.Cache来缓存带有CacheItemUpdateCallback的昂贵数据查询.

这个想法是用户必须加载一次数据,然后updatecallback每30分钟更新一次对象.

这是我插入/覆盖缓存的方式:

HttpContext.Current.Cache.Insert(cacheID, cachedObject, null,
                                  expiryTimeStamp,
                                  Cache.NoSlidingExpiration,
                                  updateCallBack);   
Run Code Online (Sandbox Code Playgroud)

出于测试原因,我设置了这样的到期日期(每20秒更新一次):

var expiryTimeStamp = DateTime.Now.Add(new TimeSpan(0, 0, 20));
Run Code Online (Sandbox Code Playgroud)

一切正常.这意味着,它每20秒更新一次昂贵的物品 - 但只需要大约25分钟.然后不再调用触发器'updateCallBack'!

我想问题是IIS处理缓存所以回调'CacheItemUpdateCallBack'不再被触发......但这只是猜测.

这引出了我的问题:

我是否需要在app.config或IIS中设置任何设置?或者我做错了什么?

编辑: 此外,我不明白为什么带有CacheItemUpdateCallback 的Insert重载没有参数CacheItemPriority.但是,CacheItemRemovedCallback的重载确实具有优先级参数.也许,如果我可以将CacheItemPriority设置为"高",它就已经解决了我的问题.

编辑:我发现了问题:每个应用程序池都有一个空闲超时属性,设置为20分钟.

Fab*_*ler 2

应用程序池的空闲超时设置为 20 分钟(默认)。由于这是一个测试实例,因此没有用户保持网站的运行。