【问题标题】:jQuery reloads javascript resources upon initial page loadjQuery 在初始页面加载时重新加载 javascript 资源
【发布时间】:2014-07-02 23:35:35
【问题描述】:

我目前有一个使用 jQuery (1.9.0) 和其他 javascript 文件的 AngularJS (1.2.18) Web 应用程序。

我注意到网站在浏览器缓存之前第一次加载非常缓慢。我按顺序发现:

  1. 我所有的外部 javascript 文件都是并行加载的(包括 jQuery)。
  2. 我的脚本 <script> $.ajaxSetup({ cache: true }); </script> 加载以防止 jQuery 再次重新加载资源。
  3. 长时间延迟,在此期间 jQuery 会依次重新加载步骤 1 中的所有内容,如下所示。

为什么 jQuery 再次尝试重新加载我的所有资源?

$.ajaxSetup({ cache: true }); 不缓存所有 javascript jQuery 需求吗?

我看到cache: falsecache: true 之间的唯一区别是时间戳是否附加到重新加载的资源的末尾。无论哪种情况,我的所有 javascript 都会再次重新加载。

感谢您的帮助!

【问题讨论】:

  • 1.在生产应用程序中,所有这些 JS 文件都应该连接并缩小(请参阅 Gulp 或 Grunt 了解这些任务)。 2. 你是如何加载这些 JS 文件的?你的 HTML 中有那些 SCRIPT 标签吗?或者是否正在进行某种依赖加载? $.ajaxSetup 仅适用于 $.ajax(...) 调用,不适用于脚本标签。 3. 我的 DevTools 设置为禁用缓存,如果你也设置了,在 DevTools 打开时你不会看到任何缓存。
  • 1.是的,这是开发环境。 2. 这些是 HTML 中的 SCRIPT 标签。 3. 是的,我的也设置为禁用缓存。让我尝试启用缓存。
  • @christian314159 看起来即使启用了缓存,jQuery 似乎仍在重新加载脚本...
  • 但如果它们是 SCRIPT 标签,它们就意味着每次都这样加载。你的 $.ajaxSetup 对它没有任何作用。
  • 感谢您的链接。我现在注意到你的意思了。加载过程中发生了很长时间,突然所有内容都在网络瀑布中出现了两次。您是否触发了任何 window.load 事件?另外,您是否注意到您所有的 SCRIPT 标记都在您的 body 标记之外(它们实际上都是 HTML 标记的所有子标记)?也许这可能是一个原因。

标签: javascript jquery ajax performance angularjs


【解决方案1】:

原来我在 index.html 中的脚本既不在&lt;head&gt; 也不在&lt;body&gt; 中。将脚本放入&lt;head&gt; 后,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2021-12-15
    • 2013-04-21
    • 1970-01-01
    • 2012-04-19
    相关资源
    最近更新 更多