将每个页面的javascript组合到一个文件中,还是提供特定于页面的文件?

时间:2015-04-21 02:08:17

标签: javascript html performance http

我们说我有一个包含26个不同页面的网站,A.html到Z.html,每个页面使用不同的JavaScript文件,A.js到Z.js.我有两个选择,我想知道是否有人对哪个更好有任何建议。

选项1 。在构建步骤中,将所有26个JS文件连接成一个文件all.js,并在每个页面上包含all.js。

赞成: - 一旦all.js被缓存,它将被缓存到每个页面,而不仅仅是当前页面。这减少了HTTP请求,不仅针对当前页面的后续视图,还针对网站上每个页面的视图,甚至是用户尚未访问过的页面。

缺点: - all.js平均比它需要的大25倍,因为它将包含许多从未在任何给定页面上执行的JavaScript。 - 通过Z.js对A.js的任何更改都意味着all.js将会发生变化,这意味着需要替换缓存版本。

选项2 。在每个页面上,仅加载所需的文件。所以在A.html上,只包括A.js,在B.html上,只包括B.js等。

赞成: - 只加载所需的js文件,这意味着文件将尽可能小。 - 对A.js的更改只会在用户访问A.html时影响用户。 B.html-Z.html将不受影响。

缺点: - 用户必须单独加载每个js文件。所以当他们访问A.html时,他们只会缓存A.js。然后当他们访问B.html时,他们需要下载B.js,等等。

每种方法都有利弊,所以我正在寻找帮助,找出哪种方法更优越。

2 个答案:

答案 0 :(得分:1)

这两种方法对我来说都不错,但我可能会选择2只是因为性能影响在开始时较小而你只加载你需要的东西。这就像选择一次性支付0%利息或每月支付几笔债务。我显然会逐月支付,因为我想尽可能多地保持流动时间(加上我想让通货膨胀对我有利)。在这种情况下,如果用户没有加载某些页面,您最终不会支付那笔"债务"。但我也不会反过来将所有内容捆绑在一个文件中,因为即使更大的性能,也应该可以忽略不计,除非你正在构建一个怪物应用程序。

无论采用何种方法,都可以考虑捆绑和缩小文件,不仅包括JavaScript,还包括CSS和图像(尽可能使用精灵)

答案 1 :(得分:-2)

多年来公认的最佳做法是将所有资产构建为最少数量的文件,并最小化/压缩生成的文件。

您应该以精灵的形式使用JavaScript,CSS和图像执行此操作。

最小化HTTP请求的好处超过了包括一些额外千字节的JavaScript或CSS或每页不必要地包含的图像数据。