威凡网全力打造:网页编程、软件开发编程、平面设计、服务器端开发、操作系统等在线学习平台!学编程,上威凡网!
PHP教程>> PHP基础 PHP技巧 PHP实例 PHP文摘 PHP模板 PHP总结
当前位置:首页 > PHP教程 > PHP技巧
上一节 下一节
 PHP实现动态压缩js与css文件的方法

本文实例讲述了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
https://github.com/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压缩/格式化/加密工具:
http://tools.jb51.net/code/jscompress

在线css代码压缩、格式化工具:
http://tools.jb51.net/code/css

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

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


申明:本教程内容由威凡网编辑整理并提供IT程序员分享学习,如文中有侵权行为,请与站长联系(QQ:254677821)!
上一节 下一节
相关教程  
其他教程  
PHP基础
PHP技巧
PHP实例
PHP文摘
PHP模板
PHP总结

违法和不良信息举报中心】邮箱:254677821@qq.com
Copyright©威凡网 版权所有 苏ICP备2023020142号
站长QQ:254677821