【问题标题】:jQuery (or maybe the browser) is cache-breaking ajax loaded scriptsjQuery(或者可能是浏览器)是打破缓存的 ajax 加载脚本
【发布时间】:2011-01-10 13:09:30
【问题描述】:

我正在通过 jQuery 的 $.ajax() 调用加载视图页面。我明确地将“缓存”选项设置为 true。在应用程序中,我们没有使用$.ajaxSetup() 来指定其他地方。

这里是 ajax 请求设置:

$(".viewDialogLink").click(function() {
    $.ajax({
        url: $(this).attr("href"),
        dataType: "html",
        type: "GET",
        cache: true,
        success: function(data) { $("#dlgViews").html(data).dialog("open"); }
    });
    return false;
});

响应成功返回。对话框打开,并显示一些内容。

不过

返回的html中有脚本标签。例如:

<script type="text/javascript" src="http://../jsapi/arcgis/?v=1.4"></script>

现在 - 在响应文本中,这些看起来很正常。但是,从 FireBug 可以看出,这些脚本的实际浏览器请求,在查询字符串中包含一个缓存中断参数。它们看起来像:

http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.4&amp;_=1264703589546.

加载的 html 中的其他资源(css 或图像)均未在其请求中包含缓存中断器。

发生了什么事?如何关闭此缓存断路器?

【问题讨论】:

  • 顺便说一句,我们使用的是 jquery 1.3.2。
  • 这是在所有浏览器中发生还是仅在 FF 中发生?您可以使用 Firebug lite 在不同的浏览器中进行测试。
  • 加载肯定在IE的同一个地方被阻塞,虽然我没有具体检查请求。我去看看。
  • 是的,它也在 IE 中发生。

标签: asp.net jquery asp.net-mvc ajax caching


【解决方案1】:

我能够在我的测试服务器上复制您的问题。然后我从 jquery 1.3.2 更改为 1.4.1。使用 Jquery 1.4.1 它不会添加缓存中断字符串。

 <script type="text/javascript" src="jquery-1.4.1.min.js"></script>

当然,使用 1.4.1 可能不适合您。

【讨论】:

  • 废话。我们现在坚持使用 1.3.2,但我们还处于开发周期的早期——也许 jQuery UI 很快就会与 1.4 兼容,我们可以升级。感谢您对此进行测试,非常感谢!
猜你喜欢
  • 2011-04-23
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
相关资源
最近更新 更多