【问题标题】:Effective way to avoid caching during Jquery Get (AJAX)在 Jquery Get (AJAX) 期间避免缓存的有效方法
【发布时间】:2012-04-18 20:08:29
【问题描述】:

我正在经历通过 Jquery 的 get 创建的 Ajax 请求的随机缓存。

Jquery 以最直接的传统方式完成(路由 + 参数 + 回调)

我已经在用了

$.ajaxSetup({cache:false});

但它似乎并不总是有效。我知道 ajaxSetup no cache 是如何工作的,我看到添加的随机参数被添加到我的请求 url。

我目前的浏览器是 IE 8.0

有没有人知道除了ajaxSetup方式之外的另一种解决方案...

【问题讨论】:

  • 你怎么知道它在缓存?
  • 您的浏览器不会缓存不同 URL 的请求(这是随机参数的目的)。
  • 我知道是因为我有在控制器中没有命中的断点。请求也返回得太快了:-)
  • 清除浏览器缓存也让我遇到了断点
  • 您是否使用 Fiddler 检查请求并确保将时间戳变量添加到每个请求(确保 cache:false 正常工作?

标签: ajax asp.net-mvc caching jquery


【解决方案1】:

浏览器本身根本不允许/不能缓存具有不同参数的请求,正如{cache:false} 添加的那样。

听起来缓存发生在您链中的其他地方,可能在您的网络服务器/应用程序中。 使用 firebug 的 net 选项卡准确检查浏览器请求的内容以及 URL 的确切内容,然后从那里获取。

【讨论】:

  • 我正在使用 Asp.Net MVC 3,如果这有影响的话
  • 我在下面添加了我的解决方案
【解决方案2】:

事实证明,我对缓存 ajax 请求的假设是错误的。 真正的问题是缓存后续重定向到发生在服务器上的操作请求(响应原始 ajax 调用)。 解决方案最终成为以下属性。

[OutputCache(Location = OutputCacheLocation.None)] 

它可以应用于控制器级别或操作级别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2015-01-12
    • 2014-03-25
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多