C# 数据缓存的使用

C# 数据缓存的使用,c#,asp.net,C#,Asp.net,根据MSDN:“每个应用程序域创建一个此类实例,只要应用程序域保持活动状态,它就保持有效。有关此类实例的信息可通过HttpContext对象的缓存属性或页面对象的Cache属性获得。” 据我所知,HttpContext和Page对象生命周期对单个http请求有效。那么,当我不能将缓存属性(数据缓存)用于另一个请求时,它的用途是什么呢?MSDN是正确的:HttpContext.Cache适用于整个应用程序生命周期,而不仅仅是一个请求 正确的说法是,HttpContext在每个请求中都存在,但是缓存

根据MSDN:“每个应用程序域创建一个此类实例,只要应用程序域保持活动状态,它就保持有效。有关此类实例的信息可通过
HttpContext
对象的缓存属性或
页面
对象的
Cache
属性获得。”


据我所知,
HttpContext
Page
对象生命周期对单个http请求有效。那么,当我不能将缓存属性(数据缓存)用于另一个请求时,它的用途是什么呢?

MSDN是正确的:
HttpContext.Cache
适用于整个应用程序生命周期,而不仅仅是一个请求


正确的说法是,
HttpContext
在每个请求中都存在,但是
缓存
对象在整个应用程序生命周期中都存在。无论何时为您创建
HttpContext
,框架都会确保分配正确的
Cache
实例。

HttpContext
Page
可能仅在请求的基础上有效。但是,缓存位于应用程序级别。仅仅因为您可以使用
HttpContext
Page
访问缓存对象,并不意味着它们的寿命相同。

我将其标记为答案。谢谢还有一个疑问,您所说的“应用程序生命周期”是什么意思。我应该像创建HttpApplication对象那样去破坏它吗。或者,当相同的HttpApplication对象被用于来自同一应用程序的另一个页面请求时,生命周期是否会继续?应用程序生命周期是应用程序的整个生命周期,从应用程序启动开始,到应用程序池关闭或回收时结束。即使有多个HttpApplication对象在运行,也只有一个Application_启动事件。所以,您的意思是,在关闭或回收应用程序池之前,我可以跨不同的请求使用缓存对象,对吗?