標籤:c style class blog code java
因為在做一個項目,項目裡面伺服器主要提供資料,但是資料多了檔案就大了,比較浪費流量和時間,我們便用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