2012-04-19 44 views
0

我在想创建脚本,会做的Javascript一个请求如下:多个JS文件

  1. 获得从JS目录中使用服务器上的
  2. 将所有脚本一个所有JavaScript的 - 这将使只一个请求而不是多个
  3. 缩减大小组合脚本
  4. 缓存文件

假设订单其中需要加载的文件被写入配置文件的某处。

现在,当我加载myexamplepage.com时,我实际上使用jQuery,主干,mootools,原型和其他一些库,但不是向这些多个文件询问服务器,而是调用myexamplepage.com/js/getjs,我得到的是结合并缩小JS文件。这样我就消除了对服务器的附加请求。当我在网上阅读关于加速您的网站时,我发现您对服务器的请求越多,网络变得越慢。

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

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

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

我正在使用PHP和Apache。

+1

您使用什么服务器端技术为您的网站? – 2012-04-19 12:25:25

+0

可能的重复[你用什么来最小化和压缩JavaScript库?](http://stackoverflow.com/questions/599911/what-do-you-use-to-minimize-and-compress-javascript-libraries) – epascarello 2012-04-19 12:28:22

+0

@Richard Ev - 在当时的PHP,但我正在考虑自己的概念,我想阅读任何平台的解决方案,他们的方法是什么。 – 2012-04-19 12:35:32

回答

2

而不是让服务器做这个动作,我建议事先做好:只需连接脚本并通过非破坏性的缩小器(如jsminGoogle Closure Compiler)以“简单”模式运行它们。

这也使您有机会在该文件上放置一个版本号,并给它一个长的缓存寿命,以便用户不必每次到达页面时都要重新下载它。例如:假设您的页面内容频繁变化,您可以在页面上设置缓存标题以表明它每天过期。当然,您的JavaScript不会每天都在改变。因此,您的page.html可以包含一个名为all-my-js-v4.js的文件,它具有较长的缓存寿命(如一年)。如果您更新JavaScript,请创建一个名为all-my-js-v5.js的新的多功能一体文件,并更新page.html以包含该文件。用户下次看到page.html时,他们会请求更新的文件;但在那之前,他们可以使用他们的缓存副本。

如果你真的想要这样做,如果你使用的是Apache,你可以使用mod_pagespeed

+0

我明白你在说什么,我知道第三方的minfiers和combiners,但是如果我决定向JS文件添加另一行,我需要对所有文件执行相同的操作 - 这需要一些时间,不是吗? 编辑:我读了一点关于mod_pagespeed的内容,看起来很有意思,以后我会再谈谈。但这不会是真正的方法,因为那需要在服务器上安装这个mod,我想如果你坐在共享服务器上,你无法实现这一点。 – 2012-04-19 12:38:25

+0

@VytautasButkus:*“需要一些时间,不是吗?”*没有任何真正的方式。作为一个实验,我通过'jsmin'运行了8M(基本上不相关的)JavaScript文件。花了四分之一秒。 Closure Compiler速度较慢,为34秒,但这是因为它做了很多工作(并获得更好的结果)。而且我猜你的JavaScript少于8M。 (它在6.5秒内完成了jQuery 1.7.2文件。)这是在我的双核2.4GHz机器上,所以根本不是一个超级充电的怪物。 – 2012-04-19 12:53:36

+0

我不是在谈论软件压缩文件所花费的时间,而是在谈论需要将所有5个或更多文件放入软件然后上传这些文件的时间。假设你每天都需要做每日更新。那么你每周浪费多少时间?假设你可以完全跳过这个过程。 – 2012-04-19 13:12:56

1

如果您使用.NET,我可以推荐Combres。它对JavaScript和CSS文件进行组合和缩小。

0

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

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