假设我的页面结构是:
1. one.html :
includes -> a.js , b.js , c.js ,d.js
2. two.html :
includes -> a.js , b.js, x.js, y.js, z.js
3. three.html :
includes -> a.js , b.js, s.js, x.js, y.js
等等。 有些页面比其他页面更受欢迎,比如说其中3个页面贡献了网站所有页面访问量的99%。
我正在寻找以下问题的解决方案:
i) 将文件组合并并最小化,以便可以包含在页面中。
ii) 具有将组的文件名映射到最终组合文件名的某种逻辑。
iii) 包括像Google Closure编译器/ YUI压缩程序这样的缩小器。
我看过的一个解决方案是: PHP minify
它实现了大部分功能。但是对于我来说,它具有以下缺点:
i) 我将在CDN服务器上托管我的静态组合文件,而不是在托管PHP minify的同一Web服务器上,因此PHP minify按组名称提供文件的逻辑对我不起作用。
ii) PHP Minify使用PHP CGI处理和服务脚本,而我希望我的缩小内容直接从CDN服务器提供。
PHP Minify是否有一些函数将组名映射到组合文件名,这样我就可以在我的网页中直接设置组合JS文件的CDN路径。例如:
<?php
$groupName = array("onePage" => array('a.js','b.js','c.js','d.js');
?>
<script type="text/javascript" src="http://www.MYSTATICSERVER.com/js/<?php getMergedFileName($groupName)"></script>
与其调用PHP Minify的PHP脚本来获取一组文件,实际上是一个PHP页面调用,然后从之前生成的文件中提供JavaScript内容:
<script type="text/javascript" src="http://www.MYWEBSERVER.com/min/?g=onePage" ></script>
我同意大多数情况下可以通过结合不同的解决方案和自定义部署脚本以及压缩工具(如ANT,FABRIC + YUICompressor/ClosureCompiler)来实现,但是我正在寻找一个经过充分开发的可配置解决方案,可能我错过了一些。