使用AJAX的ASP.NET OutPutCache VaryByParam和VaryByHeader

时间:2010-05-07 06:41:16

标签: asp.net caching outputcache

我正在尝试使用VaryByParam和VaryByHeader进行一些缓存。当一个AJAX请求进来时,我返回一个部分XHTML。当一个常规请求进来时,我发送带有页眉/页脚的部分XHTML页面。

我尝试通过执行以下操作来缓存页面:

[OutputCache( Duration = 5, VaryByParam = "nickname,page", VaryByHeader = "X-Requested-With" )]

然而这不起作用...如果我先做一个常规请求然后运行AJAX调用我得到完整的缓存页面而不是部分,反之亦然。似乎VaryByHeader被忽略了。是因为正常请求中省略了X-Requested-With?或者它可能在做VaryByParam或VaryByHeader?

我明显的方法是让AJAX请求调用一个只返回部分页面的不同方法,但是如果可能的话我想避免这种情况。

我正在使用带有 OutputCacheAttribute 的ASP.NET MVC 1.0。

3 个答案:

答案 0 :(得分:27)

根据this MSDN reference,VaryByParam中的多个值应以分号分隔,而不是以逗号分隔。

答案 1 :(得分:2)

尝试使用www.fiddlertool.com检查标题,看看它们是否首先被传递。

答案 2 :(得分:1)

您的持续时间设置为5秒。这是故意的吗?我怀疑在这段时间之后你的缓存超时可能会有所作为。