如何将多个JavaScript文件的请求合并为一个HTTP请求?

8
这个概念对我来说是新的 - 我最初在YUI依赖配置器上遇到它。基本上,文件被链接成一个http请求,而不是多个文件的多个请求,以减少页面加载时间。
有人知道如何在LAMP堆栈上实现这一点吗?(我看到已经有一个类似的问题了,但它似乎是ASP特定的
谢谢!
更新:两个答案都很有帮助...(我的声望还不够高,无法发表评论,所以在这里加上一些离别的想法)。我还看到另一篇博客文章,其中包含PHP特定的示例,可能会有用。戴维的构建答案,让我考虑采取不同的方法。谢谢,David!
4个回答

8
有多种方法,其中最明显的两种是:
  1. 构建一个类似YUI的工具,根据您选择的组件构建一个定制的唯一版本,以便您仍然可以将文件作为静态文件提供。MooTools和jQuery UI在下载其软件包时都提供了类似于此的软件包生成器,以便为您提供最简化和高效的库。我相信通用的多用途工具已经存在。
  2. 创建一个简单的Perl/PHP/Python/Ruby脚本,根据请求提供一堆JavaScript文件。因此,“onerequest.js?load=ui&load=effects”会进入一个PHP脚本,该脚本会加载文件并使用正确的内容类型进行服务。这方面有很多例子,但我个人不是很喜欢。

我更喜欢不通过任何脚本提供静态文件,但我也想开发大约10个独立的小类文件,而不需要付出10个HTTP请求的代价。因此,我想出了一种自定义构建流程,将所有常用的类和函数组合起来,然后将它们缩小成一个名为project.min.js的单个文件,并在所有我的视图/模板中设置条件,在生产环境中包含此文件。

编辑-“自定义构建流程”实际上是一个非常简单的perl脚本。它读取我作为参数传递的每个文件,并将它们写入一个新文件,可选择自动通过JSMIN(在您喜欢的所有语言中都有)来传递整个内容。

在命令行上看起来像:

perl build-project-master.pl core.js class1.js etc.js /path/to/live/js/file.js

4

2

0

Capistrano是一种相当受欢迎的基于Ruby的Web部署工具。如果您正在考虑使用它或已经使用它,那么有一个很棒的gem可以找出CSS和Javascript依赖项,合并和压缩文件。

gem install juicer

Juicer GitHub页面上,它可以找出哪些文件彼此依赖并将它们合并在一起,从而减少每个页面视图的HTTP请求数量,从而提高性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接