HttpContext
班级的Cache
和Items
属性有什么区别?
来自MSDN文档:
缓存
获取当前应用程序域的Cache对象。项
获取一个键/值集合,可用于在HTTP请求期间在IHttpModule接口和IHttpHandler接口之间组织和共享数据。
我真的不明白该文档试图解释的内容。
在处理ASP.NET Web应用程序时,我经常使用Items
来按请求缓存数据,这样多个用户控件最终不会从数据库中查找相同的数据。这在this article。
今天,我遇到了Cache
属性的用法,看起来像每个请求缓存。我试图理解差异,但找不到比较这两者的任何好的文件。所以我想知道......
HttpContext的Cache和Items属性有什么区别?请尝试详细说明为什么您将选择在不同的真实场景中使用其中一个的示例。
答案 0 :(得分:11)
项目是按请求进行的,因此它仅适用于给定HTTP请求的给定用户。缓存在存储器中存储一段时间,并且它不依赖于特定用户。因此,可以跨多个请求跨多个用户共享缓存,但每个请求的每个用户都有一个项目。
这取决于您希望数据生存多长时间。我使用Items来存储EF中的ObjectContext或DbContext之类的东西,我只希望为该请求共享它。但是所有用户将在许多请求中使用的参考表数据,因此缓存会更好。