因為在做一個項目,項目裡面服務器主要提供數據,但是數據多了文件就大了,比較浪費流量和時間,我們便用Gzip來處理。我在本機上是apache,服務器上是IIS6.0,用的是php,那麼我就在這裡分享一下。
IIS 的 GZIP 壓縮
1.首先備份 IIS 的配置文件, 復制 C:\Windows\system32\inetsrv\metabase.xml到另外的備份文件夾中. C:\Windows\system32\inetsrv\metabase.xml是 IIS 的核心配置文件,該文件的完整性一但被破壞,IIS 將無法正常運行,嚴重到需要重新安裝系統.
2. 在開始菜單中啟動 Internet 信息服務(IIS)管理器,右鍵點擊“網站”屬性,打開“服務”選項卡,勾選“HTTP 壓縮”的兩個選項。“臨時目錄”和“臨時目錄最大容量”可根據需要自行設置。設置完成後點擊確定。
3. 右鍵點擊“網站”下方的 “Web服務擴展”,添加一個新的Web服務擴展,擴展名填寫為“HTTP Compression”或其他,都可以。“要求的文件”添加:c:\windows\system32\inetsrv\gzip.dll ,並勾選“設置擴展狀態為允許”,完成後點擊確定。
4.下面的步驟有些復雜,如果沒有確定的把握能理解,最好不要嘗試,右鍵點擊“Internet 信息服務的”“本地計算機”屬性,勾選“允許直接編輯配置數據庫”並確定。
5. 在開始菜單中運行 notepad C:\Windows\system32\inetsrv\metabase.xml ,打開metabase.xml 文件,請在任何改動前再次確認該文件已經備份。
6. 用文本編輯器打開metabase.xml ,用查找功能找到“IIsCompressionScheme”,共有3處,都在一起,分別是deflate、gzip和Parameters,deflate也是一種壓縮格式,不過性能上不如gzip。需要修改的是deflate和gzip這兩段,參數基本一樣,都要修改。
HcDynamicCompressionLevel是用來設置壓縮率,默認是0,最高是10。低壓縮級別生成稍大一些的壓縮文件,但對 CPU 和內存資源的總體影響較小。高壓縮級別通常會生成較小的壓縮文件,但會占用較多的 CPU 時間和內存。有人說設置成9性價比最高。
HcFileExtensions是用來設置壓縮的靜態文件擴展名,默認是htm、html、txt,根據網站的自身情況添加擴展名,最基本的是js、css。添加時注意原有的換行格式。
HcScriptFileExtensions是用來設置壓縮的動態文件擴展名,默認是asp、dll和exe,根據需要自行添加擴展名,無外乎aspx、php等。可以將這一項的默認刪除留空,這樣所有的動態響應都以壓縮方式發送。另外,還將動態壓縮 HcFileExtensions 中所有未指定的靜態文件類型,並且因此不將它們放入緩存。同樣地,必須將 HcDoDynamicCompression 設置為 true,以進行動態壓縮。
PHP Gzip
/* * 壓縮數據 */ public static function ob_gzip($content) // $content 就是要壓縮的頁面內容,或者說餅干原料 { if( !headers_sent() && // 如果頁面頭部信息還沒有輸出 extension_loaded("zlib") && // 而且zlib擴展已經加載到PHP中 strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) //而且浏覽器說它可以接受GZIP的頁面 { $content = gzencode($content." OK",9); //此頁已壓縮”的注釋標簽,然後用zlib提供的gzencode()函數執行級別為9的壓縮,這個參數值范圍是0-9,0表示無壓縮,9表示最大壓縮,當然壓縮程度越高越費CPU。 //然後用header()函數給浏覽器發送一些頭部信息,告訴浏覽器這個頁面已經用GZIP壓縮過了! header("Content-Encoding: gzip"); header("Vary: Accept-Encoding"); header("Content-Length: ".strlen($content)); } return $content; //返回壓縮的內容,或者說把壓縮好的餅干送回工作台。 }
轉載請注明出處:http://www.cnblogs.com/yydcdut