PHP实现动态压缩js与css文件的方法

2018-09-07 14:24

阅读:231

  本文实例讲述了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=

  这段代码会在指定的目录(例如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 JavaScripts 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:

  PS:这里再为大家推荐几款相似的在线工具供大家参考:

  JavaScript压缩/格式化/加密工具:

  在线CSS代码压缩、格式化工具:

  更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP目录操作技巧汇总》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》及《php程序设计算法总结》

  希望本文所述对大家PHP程序设计有所帮助。


评论


亲,登录后才可以留言!