【问题标题】:Will combining javascript files help speed up the website in IE8?合并 javascript 文件是否有助于加快 IE8 中的网站速度?
【发布时间】:2010-09-20 19:45:18
【问题描述】:

PageSpeed 和 Yslow 建议结合 javascripts 文件来减少 HTTPRequest。但这是因为(我认为)pre ie8 浏览器的服务器主机连接不超过 2 个。

但是现在,浏览器有 6 个服务器主机连接,这意味着它可以并行下载 javascript。假设我们有 1MB 的 javascript,我们是否应该将其分解为 6 ​​个大小相似的不同文件以获得最大下载速度?请告诉我。

米迦勒.S

【问题讨论】:

    标签: javascript optimization web performance httprequest


    【解决方案1】:

    不,因为每个 HTTP 请求都涉及开销(如果使用流水线则更少)

    【讨论】:

    • 有没有办法知道开销有多大?
    • @Michael:用 Fiddler 或 Firebug 测量它。
    • 我进行了一些测试,我发送了一个 237.3KB 和 856.2KB 的 js 文件,响应头的内容长度显示它是 242990 和 876752。这是否意味着开销是大约 5KB 和 20KB 分别是什么?是不是比较小?为更快的下载时间打破现代浏览器的 javascripts 是否更有意义?
    【解决方案2】:

    您的问题的答案是否定的。但是,假设您能够在仅使用 IE8 的完全隔离的环境(如公司内部网)中提供您的内容,那么您的问题的答案将变为:否。

    由于您不是为 IE6-7 设计的,我假设您处于一个孤立的环境中(否则您会做出一个糟糕的设计决定)。在这种环境下,是的,您可能会从分解 JavaScript 文件中看到一些好处,但我建议不要这样做。

    为什么?由于您正在优化速度,我假设您将 JavaScript 放在 HTML 文档中 body 标记的底部,以防止 JS 阻止 DOM 的下载。这是使页面看起来加载速度更快的基本做法。但是,通过将内容放在正文的底部,您的问题变得没有实际意义。由于 DOM 不再被脚本标签阻止,因此您可以通过使用并行下载获得的任何速度优势都将在用户身上丢失,因为他们甚至在浏览器请求 JavaScript 文件之前就看到了页面加载。

    tl;dr:将 JS 分成多个文件进行并行下载并没有实际的速度优势。

    【讨论】:

    • 这真的取决于你的听众是谁。
    • 你必须对我所说的持保留态度,并更全面地看待它。速度较慢的浏览器比速度较快的浏览器更需要页面优化。将 1 个 JS 文件分成 6 个以允许并行下载可以帮助现代浏览器减少一些 MS,但它会使旧浏览器的延迟增加 6 倍。也许出于对 IE 的纯粹仇恨,你可以这样做作为惩罚(我会)......但希望你们都不像我那样残忍。
    • 我更改了提交的答案以解决该问题。
    【解决方案3】:

    拆分文件并不会产生太大的影响。如果您想在生产环境的下载时间方面看到性能提升,我总是使用 YUI Compressor (http://developer.yahoo.com/yui/compressor/) 来尽可能减小我的 JS 文件大小,然后将压缩版本的 js 提供给浏览器支持它。

    不过,在开发环境中,您不必太担心它。只需根据用途在逻辑上拆分它们,以便更容易处理它们,然后在准备好后将它们全部合并到一个文件中并针对生产进行优化。

    【讨论】:

      【解决方案4】:

      无论如何,大多数浏览器都会缓存您的 JavaScript 文件,因此在第一个页面加载后,它就不再重要了。

      但是,您应该以对开发最有帮助的方式合理地拆分 JavaScript,因为浏览器允许的同时连接数各不相同。

      为了速度,您可以混淆您的代码(通过最小化例程)并以人类没有耐心阅读的方式提供代码。

      【讨论】:

      • 混淆与速度无关。 (你的意思是缩小?)
      • @SLaks:是的,我的意思是混淆的最小化版本。它的目的可能不是混淆,但最小化你的代码肯定会混淆它。
      猜你喜欢
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多