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 相关文章推荐
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
基于PHP静态类的原罪详解
May 06 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 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排序算法类实例
2015/06/17 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
php微信开发自定义菜单
2016/08/27 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
jQuery的三种$()
2009/12/30 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
python实现可逆简单的加密算法
2019/03/22 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
python 命令行传入参数实现解析
2019/08/30 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
python中selenium库的基本使用详解
2020/07/31 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
中专生的个人自我评价
2013/12/11 职场文书
优秀医生事迹材料
2014/02/12 职场文书
融资合作协议书范本
2014/10/17 职场文书
给病人的慰问信
2015/03/23 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
小学英语听课心得体会
2016/01/14 职场文书
Redis全局ID生成器的实现
2022/06/05 Redis