Javascript一个请求多个JS文件

时间:2012-04-19 12:23:55

标签: javascript performance httprequest minify

我正在考虑创建可执行以下操作的脚本:

  1. 从服务器上使用的JS目录中获取所有javascripts
  2. 将所有脚本合并为一个 - 只会生成一个请求而不是多个
  3. 缩小合并脚本
  4. 缓存文件
  5. 让我们说需要加载文件的顺序是在某处的配置文件中写的。

    现在当我加载myexamplepage.com时,我实际上使用了jQuery,骨干,mootools,原型和其他一些库,但是我没有向服务器请求这些多个文件,而是调用myexamplepage.com/js/getjs,我得到的是组合和缩小的JS文件。这样我就消除了对服务器的额外请求。当我在网上阅读关于加速你网站的消息时,我发现你对服务器的要求越多,网络就越慢。

    由于我对编程世界很陌生,我知道我认为很多事情已经存在,我也不认为这也是例外。

    因此,请列出您所知道的与我所描述的完全或类似的内容。(请注意,每次您希望更改脚本时,您都不需要使用任何类型的缩放器或第三方软件,保留原始文件结构,你只使用类助手)

    P.S。我认为同样的方法也可以用于CSS文件。

    我使用的是PHP和Apache。

3 个答案:

答案 0 :(得分:2)

我建议不要让服务器在运行中执行此操作,而是建议提前完成:只需连接脚本并通过非破坏性的缩小器运行它们,例如jsmin或{{ 3}}"简单"模式。

这也使您有机会在该文件上添加版本号,并为其提供较长的缓存时间,以便用户每次访问该页面时都不必重新下载。例如:假设您的页面内容经常更改,您可以在页面上设置缓存标题,使其每天都过期。当然,您的 JavaScript 并不是每天都在变化。因此,您的page.html可以包含名为all-my-js-v4.js的文件,该文件具有较长的缓存时间(例如,一年)。如果您更新JavaScript,请创建一个名为all-my-js-v5.js的新一体化文件,并更新page.html以包含该文件。用户下次看到page.html时,他们会请求更新的文件;但在那之前,他们可以使用他们的缓存副本。

如果您真的想要即时执行此操作,如果您正在使用Apache,则可以使用Google Closure Compiler

答案 1 :(得分:1)

如果您使用的是.NET,我可以推荐Combres。它确实组合和缩小了JavaScript和CSS文件。

答案 2 :(得分:0)

我知道这是一个老问题,但您可能对此项目感兴趣:https://github.com/OpenNTF/JavascriptAggregator

假设您为您的javascript使用AMD模块,该项目将根据需要创建高度可缓存的层。它还有您可能感兴趣的其他功能。