• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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程序设计有所帮助。

    您可能感兴趣的文章:
    • php实现压缩多个CSS与JS文件的方法
    • php压缩HTML函数轻松实现压缩html/js/Css及注意事项
    • 将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
    • php使用gzip压缩传输js和css文件的方法
    • php实现压缩合并js的方法【附demo源码下载】
    • php压缩多个CSS为一个css的代码并缓存
    • php简单压缩css样式示例
    上一篇:Yii2框架数据验证操作实例详解
    下一篇:PHP简单实现解析xml为数组的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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