这篇文章主要介绍了关于PHP实现动态压缩js与css文件的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

本文实例讲述了PHP实现动态压缩js与css文件的方法。分享给大家供大家参考,具体如下:

正式发布产品时,我们希望将项目里的js,css合并压缩,以减少http请求、防止轻易查看源代码。

使用

只需要在头部引入一下代码即可:

demo

//定义需要压缩的文件

$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));

?>

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

*

*/

相关推荐:

php 压缩html css,PHP实现动态压缩js与css文件的方法相关推荐

  1. android 加载三方so的方法_Android开发教程之动态加载so库文件的方法

    Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...

  2. css原生样式支持,原生JS读写CSS样式的方法

    通过Element对象的getAttribute().setAttribute().removeAttribute()直接读写style属性 如:elm.setAttribute('style','c ...

  3. JQuery 添加动态元素JS或CSS无效

    1.动态添加的元素无法绑定事件 平时写前端页面,经常用到模板引擎,或者是后期通过json动态生成的元素需要绑定各种事件,但是怎么调用都调用不到,是因为,页面加载的时候,你的js已经执行完了,但是元素还 ...

  4. js读取div从html中导入,在html中div+css布局的简单应用...-js+div+css下拉导航菜单完整代...-CSS文件的条件导入 - Gene Li_169IT.COM...

    方案一: 在HTML文档中使用条件导入,如在HEAD中插入如下代码: 1: 4: .csharpcode, .csharpcode pre{font-size: small;color: black; ...

  5. 删除lpt1.css.asp或com8.index.asp这类文件的方法_asp木马无法删除解决办法

    aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8 ...

  6. 让Visual Studio (VS)链接静态库(lib)及动态库(dll)文件的方法汇总

    本文为原创+转载,旨在总结一下VS链接动态链接库(dll)和静态链接库(lib)的方法. 在调试 Visual Studio 程序时,经常有一些动态链接库(即 dll 文件)需要加载到工程里,这样才能 ...

  7. IIS7开启gZip动态压缩

    1.安装动态压缩模块: 安装过程可能的报错:This application has requested the Runtime to terminate it in an unusual way. ...

  8. [转载]在ASP.NET MVC中,使用Bundle来打包压缩js和css

    在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原 ...

  9. Gzip的动态压缩和静态压缩详解

    Gzip的压缩分为动态压缩和静态压缩.动态压缩简而言之就是nginx上的资源是以原始文件形式存在的,当返回给浏览器的时候再进行压缩,浏览器收到压缩文件再解压缩.静态压缩就是nginx上的资源不是原始文 ...

最新文章

  1. s5pv210 uboot-2012-10移植(三) 之支持SPL
  2. python装饰器原理-看完这篇文章还不懂Python装饰器?
  3. hdu1.3.8 As Easy As A+B
  4. Linux 终端常用快捷键
  5. python数据结构剑指offer-从尾到头打印链表
  6. 若依框架在未登录的情况下访问swagger页面
  7. django高级之点赞、文章评论及上传文件
  8. ajax控件扩展,22.6 扩展控件
  9. jmeter插件下载
  10. mysql 5.7基本优化_mysql5.7优化
  11. 使用 python 管理 mysql 开发工具箱 - 2
  12. 比特币 出块速度多少 为什么每秒7笔 以太坊15TPS
  13. himawari-8卫星叶绿素a产品、_海洋卫星眼中的台风quot;海神quot;
  14. springboot跨域处理
  15. android 圆形进度条样式,Android编程之ProgressBar圆形进度条颜色设置方法
  16. 使用Python,matplotlib绘制Nomogram列线图
  17. 装备制造业ERP软件如何帮助企业做好物料齐套管理?
  18. ARM9的存储结构~~大端存储和小端存储
  19. 百度AI攻略:驾驶行为识别
  20. 转载 学写钢笔字应该注意些什么

热门文章

  1. Java中instanceof与getClass的区别
  2. 《TensorFlow技术解析与实战》——1.2 什么是深度学习
  3. 阿里云新征程:通往智能之路
  4. C#2.0 Socket套接字编程之实例初探 200
  5. HDU1390 ZOJ1383 Binary Numbers
  6. dedeCms在首页显示要搜索的关键词
  7. matlab的combuilder系列-matlab下做com组件 zzfrom SMTH bbs
  8. OpenCV-矩阵变形reshape
  9. 域做文件服务器,linux 做域文件服务器
  10. 使用Confluence如何输出一份结构清晰 可读性高的测试文档?