PHP小技巧之JS和CSS优化工具Minify的使用方法


Posted in PHP onMay 19, 2014

一、实现合并和压缩多个JS和CSS文件的代码

HTML:

<link rel="stylesheet" type="text/css" href="cssmin.php?get=base,style1,style2,global&path=css/&v=20131023" />
<script type="text/javascript" src="jsmin.php?get=jquery-1.6.4.min.js,minjquery.js,minjquery.ui.js,test.js,global.js&path=js/&v=20131023"></script>

PHP:

//输出JS
header ("Content-type:Application/x-javascript; Charset: utf-8");
if(isset($_GET)) {
 $files = explode(",", $_GET['get']);
 $str = '';
 foreach ($files as $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 ($files as $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参数

return array(
  // 'js' => array('//js/file1.js', '//js/file2.js'),
  // 'css' => array('//css/file1.css', '//css/file2.css'),
);

3、在网页中按照如下方式引用就可以了:

<script type="text/javascript" src="/min/g=js&20140519"></script>

后面的数字可以用更新日期来作标志,"min"和步骤1里的名称对应。

4、性能优化,请参考code.google.com/p/minify/wiki/CookBook

注意:

1、需要将httpd.conf里的rewrite_module模块开启

2、开发过程中,可以将调试模式开启,开发完毕后再将调试模式关闭,可以利用火狐浏览器的firebug来查看

$min_allowDebugFlag = true
PHP 相关文章推荐
杏林同学录(三)
Oct 09 PHP
How do I change MySQL timezone?
Mar 26 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
Aug 07 PHP
php网站地图生成类示例
Jan 13 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
php如何获取文件的扩展名
Oct 28 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
php开启openssl的方法
May 15 #PHP
PHP整数取余返回负数的相关解决方法
May 15 #PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 #PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 #PHP
php实例分享之二维数组排序
May 15 #PHP
php表单请求获得数据求和示例
May 15 #PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 #PHP
You might like
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
Dojo 学习要点
2010/09/03 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
iframe实用操作锦集
2014/04/22 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Python中常用的os操作汇总
2020/11/05 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
美国存储和组织商店:The Container Store
2017/08/16 全球购物
优秀团员个人事迹材料
2014/01/29 职场文书
诚信贷款承诺书
2014/05/30 职场文书
上海世博会口号
2014/06/19 职场文书
高中同学会活动方案
2014/08/14 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
java多态注意项小结
2021/10/16 Java/Android