为减少HTTP请求,我们往往需要合并和压缩多个JS和CSS文件,下面记录下网上关于实现这个功能的PHP源码以及开源项目Minify的使用方法。
一、实现合并和压缩多个JS和CSS文件的代码
HTML:
PHP:
//输出JS
header ("Content-type:Application/x-javascript; Charset: utf-8");
if(isset($_GET)) {
$files=explode(",",$_GET['get']);
$str='';
foreach($filesas$key=>$val){
$str.=file_get_contents($_GET['path'].$val);
}
$str=str_replace("\t","",$str);//清除空格
$str=str_replace("\r\n","",$str);
$str=str_replace("\n","",$str);
// 删除单行注释
$str= preg_replace("/\/\/\s*[a-zA-Z0-9_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/","",$str);
// 删除多行注释
$str= preg_replace("/\/\*[^\/]*\*\//s","",$str);
echo$str;
}
//输出CSS
header ("content-type:text/css; charset: utf-8");
if(isset($_GET)) {
$files=explode(",",$_GET['get']);
$fc='';
foreach($filesas$key=>$val){
$fc.=file_get_contents($_GET['path'].$val.".css");
}
$fc=str_replace("\t","",$fc);//清除空格
$fc=str_replace("\r\n","",$fc);
$fc=str_replace("\n","",$fc);
$fc= preg_replace("/\/\*[^\/]*\*\//s","",$fc);
echo$fc;
}
只是个简单原型,没有封装。另外,合并后的文件记得配合缓存
二、Minify的使用方法
1、从code.google.com/p/minify/下载最新版Minify并解压缩,将"min"文件夹连同里面的内容一起复制到DOCUMENT_ROOT目录下(即网站跟目录)。
可以修改文件夹名"min"
2、在"min/groupsConfig.php"里配置g参数,代码如下:
returnarray(
// 'js' => array('//js/file1.js', '//js/file2.js'),
// 'css' => array('//css/file1.css', '//css/file2.css'),
);
3、在网页中按照如下方式引用就可以了:
后面的数字可以用更新日期来作标志,"min"和步骤1里的名称对应。
4、性能优化,请参考code.google.com/p/minify/wiki/CookBook
注意:
1、需要将httpd.conf里的rewrite_module模块开启
2、开发过程中,可以将调试模式开启,开发完毕后再将调试模式关闭,可以利用火狐浏览器的firebug来查看,代码如下:
$min_allowDebugFlag = true