|
Minify在Google Code上有一个PHP的开源项目叫Minify, 它可以合并、精简、Gzip压缩和缓存JavaScript和CSS文件。其文件合并功能就非常类似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 (Windows、Mac)。
- 下载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]
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的情况下更新静态文件,可以采用类似时间戳的方式, |
[backcolor=rgb(248, 248, 248) !important]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'], |
[backcolor=rgb(248, 248, 248) !important]
|
|