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 相关文章推荐
PHP 替换模板变量实现步骤
Aug 24 PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
php日期操作技巧小结
Jun 25 PHP
功能强大的php文件上传类
Aug 29 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 PHP
PHP超全局变量实现原理及代码解析
Sep 01 PHP
PHP扩展安装方法步骤解析
Nov 24 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类
2006/11/25 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
vscode下的vue文件格式化问题
2018/11/28 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python3实现连接SQLite数据库的方法
2014/08/23 Python
跟老齐学Python之网站的结构
2014/10/24 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
python简单实现插入排序实例代码
2020/12/16 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
个人委托书范本
2014/09/13 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
武当山导游词
2015/02/03 职场文书
教师个人年终总结
2015/02/11 职场文书
倡议书格式及范文
2015/04/29 职场文书