2010-07-02 112 views
2

我写了一个小的ASHX处理程序,它使用一个小型状态对象,我希望在一系列请求的生命周期中保持这种状态。我有处理程序将对象放入服务器端缓存(HttpContext.Current.Cache)中,并在ProcessRequest的开头检索它。ASP.NET服务器端缓存生存期?

我可以期待该对象留在缓存中多久?我希望处理程序实例能够来来去去,所以我希望能够坚持所有的处理程序(直到请求本身确定不再需要)。但是,如果我有处理程序写入应用程序日志时,它必须创建一个新的状态对象,因为它不在缓存中,我看到它创建了2-3次。

回答

2

当您add the item to the cache时,您可以指定生命周期和优先级。

项目不保证在整个请求的生存期内保留在缓存中。例如,如果存在内存压力,则高速缓存可能会被清除,但为您的项目设置更高的优先级使其更有可能保留在高速缓存中。

+0

我正在使用Cache []添加项目。谢谢。 – redman 2010-07-02 13:51:32

+1

如果您只是使用'Cache []'添加项目,则使用默认的生命周期和优先策略。我不确定它们是什么,但我非常肯定,除非您遇到内存压力(和/或出于某种原因,您的appdomain重新启动),否则应该不会定期从缓存中删除。 – LukeH 2010-07-02 14:02:27