gzip the js and css

Minify

在Google Code上有一個PHP的開源項目叫Minify,它可以合併、精簡、Gzip壓縮和緩存JavaScript和CSS文件。其文件合併功能就非常類似Combo Handler,只不過URL的語法稍微有點不同。如果Yahoo! CDN安裝了Minify,那麼上面Rich Text Editor的代碼用Minify的默認格式來寫就是:

<script src=""></script>

本地使用Minify很簡單,只需要Apache + PHP環境就OK了:

  1. 安裝好Apache + PHP (Windows、Mac)。
  2. 下載Minify源碼,解壓,然後把min文件夾複製到指定的根目錄下,比如localhost。這時URL的寫法大概是http://localhost/min/f=...
  3. 啓用Apache的Mod Rewrite模塊,然後在min文件夾下新建.htaccess文件,並添加如下Rewrite規則:
    <IfModule mod_rewrite.c>
    RewriteEngine on
    
    # You may need RewriteBase on some servers
    # 如果做了所有的開啓Mod Rewrite的設置依舊無效,請城市嘗試啓用下面這句
    #RewriteBase /min
    
    # 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=…,不僅解決前面問題且更短。

  4. 配置Minify,即編輯min/config.php文件
    $min_enableBuilder = true;
    //本地使用時可以通過http://localhost/min/builder/來進行配置,外部使用時請設置爲false
    
    //$min_cachePath = 'c:WINDOWSTemp';
    //$min_cachePath = '/tmp';
    //$min_cachePath = preg_replace('/^d+;/', '', session_save_path());
    //選擇其一,去掉註釋設置臨時緩存目錄,這樣可以減少程序運算提高性能
    
    $min_serveOptions['maxAge'] = 1800;
    //設置瀏覽器緩存的時間,爲了提升性能建議這個時間設置儘可能的長,比如315360000
    //如果需要在不改變URL的情況下更新靜態文件,可以採用類似時間戳的方式,
    //如http://localhost/min/f=example/example.css&20100601.css
    //建議靜態文件採用版本號管理,每次修改都需要升級版本號,這樣就無需時間戳了,
    //如http://localhost/min/f=example/example_1_0_1.css
    
    $min_serveOptions['minApp']['maxFiles'] = 10;
    //參數f獲取參數的個數,即合併的文件個數,這個數量完全可以增大,比如50,
    //當然可能會遇到URL最大值問題,後會有解釋
    
    $min_documentRoot = '';
    //$min_documentRoot = substr(__FILE__, 0, strlen(__FILE__) - 15);
    //$min_documentRoot = $_SERVER['SUBDOMAIN_DOCUMENT_ROOT'];
    //當$min_documentRoot爲空時,其值就是$_SERVER['DOCUMENT_ROOT'],
    //但合併的文件不在$_SERVER['DOCUMENT_ROOT']下,會導致400錯誤,
    //這個時候可以啓用第2行或第3行
    
    
  5. 使用Minify比如,有兩個JavaScript文件,http://localhost/example/a.js,http://localhost/example/b.js,那麼使用Minify合併的URL是http://localhost/min/f=/example/a.js,/example/b.js,直接把這個URL放到頁面中就可以使用了。

實際上Minify不僅僅實現了合併功能,同時默認在合併的同時還會對文件進行精簡壓縮,如果你在本地本身就對文件進行壓縮了,比如使用YUI Compressor,那麼可以在config.php中進行如下設置取消Minify的壓縮以提升性能:

$min_serveOptions['minifiers']['application/x-javascript'] = '';
$min_serveOptions['minifiers']['text/css'] = '';

如果服務端支持Java,那麼也可以對Minify進行簡單配置而實現利用YUI Compressor壓縮JavaScript和CSS文件。

直接在服務端進行合併和壓縮,這非常的靈活,也極大的減輕了前端開發成果的部署過程,真使事半功倍。更多配置請看Minify CookBook和Wiki

小提示:Minify使用的New BSD License,這就意味着使用者可以幾乎自由的使用該代碼。BSD協議鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由於允許使用者修改和重新發布代碼,也允許使用或在BSD代碼上開發商業軟件發佈和銷售,因此是對商業集成很友好的協議。而很多的公司企業在選用開源產品的時候都首選BSD協議,因爲可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章