11

我正在尝试使用 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一起使用。

4

3 回答 3

28

根据这个 MSDN 参考,VaryByParam 中的多个值应该用分号分隔,而不是逗号分隔。

于 2010-08-12T15:40:35.547 回答
2

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

于 2010-05-07T06:46:07.123 回答
1

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

于 2010-05-07T07:55:48.363 回答