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 相关文章推荐
WHOIS类的修改版
Oct 09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
Jul 04 PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
PHP实现统计所有字符在字符串中出现次数的方法
Oct 17 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 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
改变Apache端口等配置修改方法
2008/06/05 PHP
PHP批量生成缩略图的代码
2008/07/19 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
js格式化货币数据实现代码
2013/09/04 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
python实现ping的方法
2015/07/06 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
python设置环境变量的作用整理
2020/02/17 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
《大作家的小老师》教学反思
2014/04/16 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
初中学习计划书范文
2014/09/15 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python