【问题标题】:ASP.NET OutPutCache VaryByParam and VaryByHeader with AJAXASP.NET OutPutCache VaryByParam 和 VaryByHeader 与 AJAX
【发布时间】:2011-02-16 17:15:27
【问题描述】:

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

【问题讨论】:

  • 原来这可能只是我家用机器上的一个问题。在另一台机器上测试它似乎工作正常。

标签: asp.net caching outputcache


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 抱歉,在复制和粘贴该代码之前,我正在使用我的设置。它实际上设置为 120。
      猜你喜欢
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      相关资源
      最近更新 更多