跨站点组合JS文件的最佳方法

时间:2011-03-07 19:18:51

标签: javascript deployment

我的网站有1,2,3页和js文件A,B,C,D,E,X和Y.以下概述了每个页面包含的文件:

Page 1: A
Page 2: A, B, C, D, E
Page 3, A, B, C, X, Y

现在,所有这些文件都是单独发送的,第一次下载它们需要一段时间。我知道将它们压缩成一个文件会缩短传输时间,所以这就是我的计划。但是在这种情况下,我不想将它们全部压缩到一个文件中,因为第3页可以通过已经缓存A,B和C来从第2页中受益(如果有一个大的ABCDE文件,这是不可能的)一个很大的ABCXY文件)。是的,用户将在典型使用中切换2到3。

但是这里的答案不仅仅是“制作一个ABC文件,一个DE文件和一个XY文件并完成”,因为我所描述的情况只是一个更大问题的一部分。

人们通常如何处理在网站上组合JS文件,其中一些页面共享一些文件?

注1:所有文件都是几百到几千行的顺序。

注意:如果由于缺乏某些细节而无法回答问题,请解释为何细节重要,以及如何改变您的答案!

2 个答案:

答案 0 :(得分:1)

我的第一个问题是缩小javascript文件,这是一个选项吗?这可能会解决您加载多个文件的问题;你是如何加载文件的,它是模板的一部分吗?

新编辑:关于主题,我通常也会尝试将这些文件保存在一个大的javascript中,但大多数时候都很难,所以我尽量缩小甚至在服务器上使用压缩。

答案 1 :(得分:0)

我的项目中有相同的情况,几十个常见的脚本,每个页面都有自己的附加集。我选择了这个选项:

Page 1: A
Page 2: ABC, DE
Page 3: ABC, XY

是的,拥有ABCDE可能会更好,然后你有一个http请求,但是这会使支持变得有点棘手(需要记住向所有页面添加新的通用脚本),所以在你做之前不要这样做真的看到你的服务器遭受了大量的请求。过早的优化是邪恶的!

另一个问题:浏览器可以同时从一个域加载2个脚本文件(一些新浏览器甚至增强了该数量),因此不会阻止客户端等待加载脚本。所以采用这种方法应该不是问题,你仍然可以轻松地维护它。

您也可以考虑可以自动化它的库。对于Java,您可以查看Jawr,我不知道您的服务器端是什么,所以只需看看它的可能性并找到适合您环境的类似内容。

ADD-ON:只弹出一个问题,在Jawr的帮助下我们可以使用'debug'模式,这意味着所有文件都将单独发送,这有利于开发。在制作中,我们设置jawr.debug.on = false并使用捆绑包。

换句话说,在开发应用程序时:

Page 1: A
Page 2: A, B, C, D, E
Page 3: A, B, C, X, Y

在生产中我们使用ABC ......这只是改变钳口配置和imho这是最好的方法。如果你使用java,你可以花一些时间玩它,否则找到类似的框架/库真的很值得。