我使用OutputCache配置文件设置了几个页面,并确认它们是通过使用多个浏览器进行缓存的,并请求检索具有与所有请求匹配的时间戳的页面。当我尝试枚举HttpContect.Cache时,它总是空的。
任何想法在这里发生了什么,或者我应该在哪里找到这些信息呢?
更新
这不是客户端缓存,因为多个浏览器看到相同的响应。这里有一些代码可以解释发生了什么。
Web.Config缓存设置
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<clear/>
<add name="StaticContent" duration="1200" varyByParam="none"/>
<add name="VaryByParam" duration="1200" varyByParam="*"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
...
</system.web>
**缓存操作方法
[OutputCache(CacheProfile = "StaticContent")]
public ActionResult Index()
{
return View(new CollaborateModel());
}
用于枚举缓存的代码,是的,它是粗略的,这是在控制器操作方法中定义的
var sb = new StringBuilder();
foreach (KeyValuePair<string, object> item in HttpContext.Cache)
{
sb.AppendFormat("{0} : {1}<br />", item.Key, item.Value.ToString());
}
ViewData.Add("CacheContents", sb.ToString());
HttpContext.Cache是count始终为null的地方,即使缓存似乎工作正常。
答案 0 :(得分:0)
这可能是因为页面已经缓存在客户端浏览器的下游而不是服务器上。
答案 1 :(得分:0)
我没有使用HttpCache,而是使用我自己的缓存模型来保存数据访问层中的数据集。如果我查找给定用户名的AD配置文件并将其转换为DTO,那么我只是将该配置文件放在轮廓DTO的滚动集合中,我将在轮询AD之前检查该信息。