我正在尝试使用 VaryByParam 和 VaryByHeader 进行一些缓存。当一个 AJAX 请求进来时,我返回一个部分 XHTML。当一个常规请求进来时,我发送带有页眉/页脚的部分 XHTML 页面。
我尝试通过执行以下操作来缓存页面:
[OutputCache( Duration = 5, VaryByParam = "nickname,page", VaryByHeader = "X-Requested-With" )]
但是这不起作用...如果我先执行常规请求然后运行 AJAX 调用,我将获得完整的缓存页面而不是部分缓存页面,反之亦然。似乎 VaryByHeader 被忽略了。是因为在正常请求中省略了 X-Requested-With 吗?或者它正在做 VaryByParam 或 VaryByHeader?
我明显的解决方法是让 AJAX 请求调用一个只返回部分页面的不同方法,但是如果可能的话,我想避免这种情况。
我将 ASP.NET MVC 1.0 与OutputCacheAttribute一起使用。