找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2933|回复: 1

[分享] 在服务端合并和压缩JavaScript和CSS文件(2)

[复制链接]
发表于 2013-4-24 16:48:50 | 显示全部楼层 |阅读模式 来自 中国–北京–北京


Minify
在Google Code上有一个PHP的开源项目叫Minify, 它可以合并、精简、Gzip压缩和缓存JavaScriptCSS文件。其文件合并功能就非常类似Combo Handler,只不过URL的语法稍微有点不同。如果Yahoo! CDN安装了Minify,那么上面Rich Text Editor的代码用Minify的默认格式来写就是:
1
<script src="[color=blue !important]http://yui.yahooapis.com/min/f= 2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js, 2.8.0r4/build/container/container_core-min.js, 2.8.0r4/build/menu/menu-min.js, 2.8.0r4/build/element/element-min.js, 2.8.0r4/build/button/button-min.js, 2.8.0r4/build/editor/editor-min.js"></script>



本地使用Minify很简单,只需要Apache + PHP环境就OK了:
  • 安装好Apache + PHP (WindowsMac)。
  • 下载Minify源码,解压,然后把min文件夹复制到指定的根目录下,比如localhost。这时URL的写法大概是http://localhost/min/f=…
  • 启用Apache的Mod Rewrite模块,然后在min文件夹下新建.htaccess文件,并添加如下Rewrite规则
    1
    <IfModule mod_rewrite.c> RewriteEngine on

    [backcolor=rgb(248, 248, 248) !important]
    2
    # You may need RewriteBase on some servers

    3
    # 如果做了所有的开启Mod Rewrite的设置依旧无效,请城市尝试启用下面这句 #RewriteBase /min

    [backcolor=rgb(248, 248, 248) !important]
    4
    # rewrite URLs like "/min/f=..." to "/min/?f=..." RewriteRule ^([bfg]=.*) index.php?$1 [L,NE] </IfModule>



    如果不启用Mod Rewrite功能,则Minify的URL会类似http://localhost/min/index.php?f=…,这对客户端和中间服务器的缓存不利,而启用了Mod Rewrite之后的URL类似http://localhost/min/f=…,不仅解决前面问题且更短。
  • 配置Minify,即编辑min/config.php文件
    01
    $min_enableBuilder = true;

    [backcolor=rgb(248, 248, 248) !important]
    02
    //本地使用时可以通过[color=rgb(0, 130, 0) !important]http://dwn/min/builder/来进行配置,外部使用时请设置为false

    03
    //$min_cachePath = 'c:\\WINDOWS\\Temp';

    [backcolor=rgb(248, 248, 248) !important]
    04
    //$min_cachePath = '/tmp';

    05
    //$min_cachePath = preg_replace('/^\\d+;/', '', session_save_path());

    [backcolor=rgb(248, 248, 248) !important]
    06
    //选择其一,去掉注释设置临时缓存目录,这样可以减少程序运算提高性能 $min_serveOptions['maxAge'] = 1800;

    07
    //设置浏览器缓存的时间,为了提升性能建议这个时间设置尽可能的长,比如315360000

    [backcolor=rgb(248, 248, 248) !important]
    08
    //如果需要在不改变URL的情况下更新静态文件,可以采用类似时间戳的方式,

    09
    //如[color=rgb(0, 130, 0) !important]http://localhost/min/f=example/example.css&20100601.css

    [backcolor=rgb(248, 248, 248) !important]
    10
    //建议静态文件采用版本号管理,每次修改都需要升级版本号,这样就无需时间戳了,

    11
    //如[color=rgb(0, 130, 0) !important]http://localhost/min/f=example/example_1_0_1.css $min_serveOptions['minApp']['maxFiles'] = 10;

    [backcolor=rgb(248, 248, 248) !important]
    12
    //参数f获取参数的个数,即合并的文件个数,这个数量完全可以增大,比如50,

    13
    //当然可能会遇到URL最大值问题,后会有解释 $min_documentRoot = '';

    [backcolor=rgb(248, 248, 248) !important]
    14
    //$min_documentRoot = substr(__FILE__, 0, strlen(__FILE__) - 15);

    15
    //$min_documentRoot = $_SERVER['SUBDOMAIN_DOCUMENT_ROOT'];

    [backcolor=rgb(248, 248, 248) !important]
    16
    //当$min_documentRoot为空时,其值就是$_SERVER['DOCUMENT_ROOT'],

    17
    //但合并的文件不在$_SERVER['DOCUMENT_ROOT']下,会导致<a href="[color=rgb(0, 130, 0) !important]http://code.google.com/p/minify/wiki/CommonProblems#Builder_Fails_/_400_Errors" rel="nofollow">400错误</a>,

    [backcolor=rgb(248, 248, 248) !important]
    18
    //这个时候可以启用第2行或第3行





发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2013-8-28 14:52:02 | 显示全部楼层 来自 中国–广东–深圳
学习了哦~~

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-21 20:26 , Processed in 0.043955 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表