PHP实现动态压缩js与css文件的方法
程序员文章站
2022-05-11 15:45:58
本文实例讲述了php实现动态压缩js与css文件的方法。分享给大家供大家参考,具体如下:
正式发布产品时,我们希望将项目里的js,css合并压缩,以减少http请求、防止...
本文实例讲述了php实现动态压缩js与css文件的方法。分享给大家供大家参考,具体如下:
正式发布产品时,我们希望将项目里的js,css合并压缩,以减少http请求、防止轻易查看源代码。
使用
只需要在头部引入一下代码即可:
<meta charset="utf-8"/> <title>demo</title> <?php //定义需要压缩的文件 $css = array( css_path . 'base.css', css_path . 'style.css', css_path . 'my.css' ); $js = array( pub_path . '/lib/zepto.min.js', pub_path . '/js/1.js', js_path . '2.js', ); $css_path = base_url(parse_css($css)); $js_path = base_url(parse_script($js)); ?> <link rel="stylesheet" type="text/css" href="<?php echo $css_path ?>" rel="external nofollow" > <script src="<?php echo $js_path ?>"></script> <!--下面可以继续放不能压缩或者不想压缩的文件--> <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
这段代码会在指定的目录(例如common/)里生成压缩过后的js和css.每次更新了js,css内容,请先删除生成的压缩文件。
示例:
4e387d5edce14cc2bd6396f6ebb7921b.css 7c10211f113f3175489196d336d67734.js
注意:
编写的css和js文件一定要符合规范。例如一定要加分号。js的function可以不加分号。
引用的资源
/** * 合并压缩css */ function parse_css($urls) { $url = md5(implode(',', $urls)); $path = fcpath. 'static/parse/'; $css_url = $path . $url . '.css'; if (!file_exists($css_url)) { if (!file_exists($path)) mkdir($path, 0777); $css_content = ''; foreach ($urls as $url) { $css_content .= @file_get_contents($url); } $css_content = str_replace("\r\n", '', $css_content); //清除换行符 $css_content = str_replace("\n", '', $css_content); //清除换行符 $css_content = str_replace("\t", '', $css_content); //清除制表符 $css_content = str_replace("../images/", "./../common/images/", $css_content); @file_put_contents($css_url, $css_content); } $css_url = str_replace(fcpath, '', $css_url); return $css_url; } /** * 合并压缩js */ function parse_script($urls) { $url = md5(implode(',', $urls)); $path = fcpath. '/static/parse/'; $js_url = $path . $url . '.js'; if (!file_exists($js_url)) { if (!file_exists($path)) mkdir($path, 0777); load_qy_lib('javascriptpacker'); $js_content = ''; foreach ($urls as $url) { $append_content = @file_get_contents($url) . "\r\n"; $packer = new javascriptpacker($append_content); $append_content = $packer->_basiccompression($append_content); $js_content .= $append_content; } @file_put_contents($js_url, $js_content); } $js_url = str_replace(fcpath, '', $js_url); return $js_url; }
项目里引用到第三方类库javascriptpacker可以在github下载:
gkralik/php-uglifyjs
/** * 9 april 2008. version 1.1 * * this is the php version of the dean edwards javascript's packer, * based on : * * parsemaster, version 1.0.2 (2005-08-19) copyright 2005, dean edwards * a multi-pattern parser. * known bug: erroneous behavior when using escapechar with a replacement * value that is a function * * packer, version 2.0.2 (2005-08-19) copyright 2004-2005, dean edwards * * license: http://creativecommons.org/licenses/lgpl/2.1/ * * ported to php by nicolas martin. * * ---------------------------------------------------------------------- * changelog: * 1.1 : correct a bug, '\0' packed then unpacked becomes '\'. * ---------------------------------------------------------------------- * * changes: * 2014-08-28: grkalik: change class for composer support. no functionality change. * */
ps:这里再为大家推荐几款相似的在线工具供大家参考:
javascript压缩/格式化/加密工具:
在线css代码压缩、格式化工具:
更多关于php相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《php目录操作技巧汇总》、《php基本语法入门教程》、《php运算与运算符用法总结》、《php字符串(string)用法总结》、《php数组(array)操作技巧大全》、《php数据结构与算法教程》及《php程序设计算法总结》
希望本文所述对大家php程序设计有所帮助。
上一篇: PHP中PDO事务处理操作示例