【问题标题】:Can I cache contents loaded by jQuery.getScript()我可以缓存 jQuery.getScript() 加载的内容吗
【发布时间】:2015-06-03 20:27:05
【问题描述】:

根据 jQuery 文档 (https://api.jquery.com/jquery.getscript/) 使用更灵活的 $.ajax() 方法,但它不适用于此处描述的我 (jQuery cannot load plugin file using ajax before calling the plugin function, thus, gives kind of weird result)

默认情况下,$.getScript() 将缓存设置为 false。这 将时间戳查询参数附加到请求 URL 以确保 每次请求时浏览器都会下载脚本。你 可以通过使用全局设置缓存属性来覆盖此功能 $.ajaxSetup():

$.ajaxSetup({
  cache: true
});

但我需要缓存一些内容而不是全部。

或者,您可以定义一个新方法,使用更多 灵活的$.ajax() 方法。

它对我不起作用,因为它不能保证按顺序加载文件。

现在这种情况的最佳解决方案是什么?

【问题讨论】:

  • getScript 得到一个脚本文件,你不能缓存它的一部分而不是其他部分
  • 我需要缓存一些由 getScript 函数加载的脚本文件。我不想部分缓存文件。例如如果我加载 4 个脚本,可能需要缓存其中的 2 个。
  • “它对我不起作用,因为它不能保证按顺序加载文件。” 这没有任何意义。 $.getScript 在内部使用 $.ajax。如果$.ajax 对你不起作用,$.getScript 也不会。 (提示:$.getScript 也不保证加载顺序。)
  • 也许他正在使用success 来保证加载顺序。 $.getScript('first.js').success(function(){$.getScript('second.js')}) 之类的东西 话虽如此,$.ajax 也有 success,所以我不知道它为什么重要。

标签: javascript jquery ajax file loading


【解决方案1】:
$.getScript({
    url: "foo.js",
    cache: true
})

在 jQuery 1.12.0 或更高版本上受支持

【讨论】:

    【解决方案2】:

    $.ajaxdataType: 'script'cache: true 一起使用。

    $.ajax({
        cache: true,
        url: 'foo.js',
        dataType: 'script', // optional, can omit if your server returns proper contentType for js files.
        success: function () {
            console.log('Hello World!');
        }
    });
    

    这假设您的服务器正在响应浏览器缓存文件所需的标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-04
      • 2021-05-28
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      相关资源
      最近更新 更多