Ⅰ 緗戠珯緗戦〉鎬庝箞鍘嬬緝緗戠珯緗戦〉鎬庝箞鍘嬬緝鏂囦歡
緗戦〉鎬庝箞鍘嬬緝錛熼珮鎵嬫寚鐐逛竴涓嬨
涓.鎬葷粨鏈鏂囨葷粨浜嗗備綍涓篒IS鎵樼$殑緗戠珯鍚鐢℅zip鍘嬬緝錛屼粠鑰屽噺灝戠綉欏電綉緇滀紶杈撶殑澶у皬錛屾彁楂樼敤鎴風殑欏甸潰鏄劇ず閫熷害銆
浜屻備粙緇
鏈鏂囩煡璇嗙偣鏀墮泦鑷緗戠粶錛屼富瑕佹潵婧愪簬涓鏂囩淮鍩恆傚湪浣跨敤YSlow媯嫻嬬綉絝欎腑鍚鐢ㄤ簡鍝浜涗紭鍖栨椂錛孏zip鏄涓涓鍏抽敭銆傚惎鍔℅ip鍘嬬緝灝嗙珛鍗沖噺灝戦〉闈㈢殑緗戠粶浼犺緭澶у皬銆
涓夈侶TTP鍘嬬緝姒傝堪
HTTP鍘嬬緝鏄涓縐嶅湪Web鏈嶅姟鍣ㄥ拰嫻忚堝櫒涔嬮棿浼犺緭鍘嬬緝鏂囨湰鍐呭圭殑鏂規硶銆侶TTP浣跨敤gzip絳夐氱敤鍘嬬緝綆楁硶鍘嬬緝HTML銆丣avaScript鎴朇SS鏂囦歡銆
鍘嬬緝鏈澶х殑濂藉勬槸鍑忓皯浜嗙綉緇滀紶杈撶殑鏁版嵁閲忥紝浠庤屾彁楂樹簡瀹㈡埛絝嫻忚堝櫒鐨勮塊棶閫熷害銆
褰撶劧涔熶細涓鐐圭偣澧炲姞鏈嶅姟鍣ㄧ殑璐熸媴銆侴zip鏄涓縐嶅父瑙佺殑HTTP鍘嬬緝綆楁硶銆
鍥涖侶TTP鍘嬬緝鐨勫伐浣滃師鐞
澶勭悊HTTP鍘嬬緝鐨刉eb鏈嶅姟鍣ㄧ殑宸ヤ綔鍘熺悊濡備笅:
1.緗
鏈嶅姟鍣ㄦ敹鍒版祻瑙堝櫒鐨凥TTP璇鋒眰鍚庯紝媯鏌ユ祻瑙堝櫒鏄鍚︽敮鎸丠TTP鍘嬬緝錛
鍦ㄧ敤鎴鋒祻瑙堝櫒鍙戦佺殑璇鋒眰鐨凥TTP澶翠腑錛岀敤鈥淎ccept-Encoding:gzip錛宒eflate闈欐佹枃浠朵笌鍔ㄦ佹枃浠跺悗緙鍚鍔ㄨ佹眰閮介渶瑕佸湪MetaBase.xml涓璁劇疆.
闇瑕佽劇疆闈欐佹枃浠:
HcFileExtensions鍏冩暟鎹搴撳睘鎬
(鐐瑰嚮璺寵漿鍒癕SDN鎻忚堪)闇瑕佽劇疆鍔ㄦ佹枃浠:hcscriptfileextensions鍏冩暟鎹搴撳睘鎬(鐐瑰嚮璺寵漿鍒癕SDN鎻忚堪)
3.濡傛灉璇鋒眰鐨勬枃浠舵槸HTML銆丆SS絳夐潤鎬佹枃浠訛紝涓旀枃浠跺悗緙鍚鐢ㄤ簡鍘嬬緝錛屽垯Web鏈嶅姟鍣ㄦ鏌ヨ鋒眰鏂囦歡鐨勬渶鏂板帇緙╂枃浠舵槸鍚﹀凡緇忓瓨鍦ㄤ簬鍘嬬緝緙撳啿鍖虹洰褰曚腑錛
4.濡傛灉璇鋒眰鏂囦歡鐨勫帇緙╂枃浠朵笉瀛樺湪錛學eb鏈嶅姟鍣ㄥ皢鏈鍘嬬緝鐨勮鋒眰鏂囦歡榪斿洖緇欐祻瑙堝櫒錛屽苟灝嗚鋒眰鏂囦歡鐨勫帇緙╂枃浠跺瓨鍌ㄥ湪鍘嬬緝緙撳啿鐩褰曚腑錛
5.濡傛灉璇鋒眰鏂囦歡鐨勬渶鏂板帇緙╂枃浠跺凡緇忓瓨鍦錛屽垯鐩存帴榪斿洖璇鋒眰鏂囦歡鐨勫帇緙╂枃浠訛紱
6.濡傛灉璇鋒眰鐨勬枃浠舵槸鍔ㄦ佹枃浠(濡侫SPX),騫朵笖鏂囦歡鍚庣紑鍚鐢ㄤ簡鍘嬬緝錛屽垯Web鏈嶅姟鍣ㄤ細鍔ㄦ佸帇緙╁唴瀹瑰苟灝嗗叾榪斿洖緇欐祻瑙堝櫒錛屽苟涓斿帇緙╃殑鍐呭逛笉浼氬瓨鍌ㄥ湪鍘嬬緝緙撳瓨鐩褰曚腑銆
鍔ㄨ瘝錛坴erb鐨勭緝鍐欙級鍦↖IS涓鍚鐢℉TTP鍘嬬緝
IIS榛樿や笉鏀鎸丠TTP鍘嬬緝錛屾墍浠ラ渶瑕佺畝鍗曢厤緗銆
1.鎵撳紑Internet淇℃伅鏈嶅姟(IIS)綆$悊鍣錛屽彸閿鍗曞嚮鈥滅綉絝欌->錛"灞炴р濋夋嫨鈥滄湇鍔♀濄傚湪鈥滃帇緙〩TTP鈥濅腑閫変腑澶嶉夋嗐傚帇緙╁簲鐢ㄧ▼搴忔枃浠垛濆拰鈥滃帇緙╂枃浠
2.鎻愰啋:榪欎釜姝ラゅ湪嫻嬭瘯鍚庡規垜鐨勭數鑴戞病鏈夊獎鍝嶏紝鍙浠ュ拷鐣ャ傚湪Internet淇℃伅鏈嶅姟(IIS)綆$悊鍣ㄤ腑錛屽彸閿鍗曞嚮鈥淲eb鏈嶅姟鎵╁睍鈥"娣誨姞鏂扮殑Web鏈嶅姟鎵╁睍..."錛屽湪鈥滃壋寤烘柊鐨刉eb鏈嶅姟鎵╁睍鈥濇嗕腑杈撳叆鎵╁睍鍚嶇О鈥淗TTP鍘嬬緝
3.鐢ㄦ枃鏈緙栬緫鍣ㄦ墦寮C:.XML(寤鴻鍏堝囦喚)鎵懼埌Location=鐢ㄤ簬璁劇疆鏀炬皵鍘嬬緝銆備互涓婁袱涓鑺傜偣鐩擱偦銆傚苟涓旇劇疆鐨勫睘鎬ф槸鐩稿悓鐨勩
濡傛灉闇瑕佸帇緙╁姩鎬佹枃浠訛紝璇峰皢HcDoDynamicCompression璁劇疆涓衡淭RUE濡傛灉闇瑕佸帇緙╅潤鎬佹枃浠訛紝璇峰皢HcDoStaticCompression鍜孒cDoOnDemandCompression璁劇疆涓衡淭RUE/LM/W3SVC/Filters/鍘嬬緝/deflate
2.HcCompressionDll=
3.HcCreateFlags=
4.HcDoDynamicCompression=TRUE9
15.
HcOnDemandCompLevel=
23./LM/W3SVC/Filters/Compression/gzip
24.HcCompressionDll=
25.HcCreateFlags=TRUE9
37.HcOnDemandCompLevel=
銆俢sharpcode錛屻俢sharpcodepre{font-size:small錛涢滆壊:榛戣壊錛
font-family:consolas錛
鑳屾櫙鑹:#ffffff/*絀虹櫧:pre*/}.csharpcodepre
{margin:0em錛泒.csharpcode銆俽em{color:#008000錛泒.csharpcode銆俴wrd
{
棰滆壊:
#0000ff
}
銆俢sharpcode
銆傛綔鑹囩敤鐑涓瀛愬弽搴斿爢錛坰ubmarinethermalreactor鐨勭緝鍐欙級
{
棰滆壊:
#006080;
}
銆俢sharpcode
銆傚栫戞墜鏈
{color:#0000c0錛泒.csharpcode銆傞勭紪紼媨棰滆壊:
#cc6633}.csharpcode銆俛sp{鑳屾櫙鑹:
#ffff00
}
銆俢sharpcode
銆傝秴鏂囨湰鏍囪拌璦
{
棰滆壊:
#800000;
}
銆俢sharpcode
銆傚睘鎬
{
棰滆壊:
#ff0000}.csharpcode銆俛lt{background-color:#f4f4f4錛涘藉害:100%錛
杈硅窛:0em}.csharpcode銆俵num{color:#606060錛泒
4.緙栬緫鍚庝繚瀛楳etaBase.xml鏂囦歡錛涘傛灉鏃犳硶淇濆瓨璇ユ枃浠訛紝瀹冨彲鑳芥e湪琚獻IS浣跨敤銆傛墦寮鈥滃紑濮嬧->錛"綆$悊宸ュ叿"鏈嶅姟鈥濓紝鍋滄⑩淚IS綆$悊鏈嶅姟鎴栬呭湪闇瑕佽皟鑺傜殑欏甸潰錛屾寜浣忛敭鐩樼殑銆怌trl銆戦敭錛屽悓鏃舵粦鍔ㄩ紶鏍囩殑婊戣疆鍗沖彲璋冭妭銆
1.鎵撳紑嫻忚堝櫒,鎸変笅Ctrl閿,榧犳爣婊戣疆鍚戝墠婊戝姩銆
2.灝嗛〉闈㈠ぇ灝忛噸鏂版仮澶嶅埌100%,榪欐牱緗戦〉灝辨仮澶嶆垚鍔熴
3.鎴栬呯偣鍑?-璁劇疆銆
4.鍦ㄨ劇疆欏甸潰,鎵懼埌緗戦〉緙╂斁,鐐瑰嚮緗戦〉緙╂斁銆
鐢佃剳緗戦〉鎬庝箞緙╁皬鏀懼ぇ錛
1.鎵撳紑鐢佃剳緗戦〉錛屽湪鍙充笅瑙掓壘鍒頒竴涓鏀懼ぇ闀滃浘鏍囷紝鐐瑰嚮鍙充晶鐨刜鍥炬爣
2.鍑虹幇鑿滃崟鍚庯紝鐢ㄩ紶鏍囨嫋鍔ㄦ粦鍔ㄦ潯錛屽悜宸﹀氨鏄緙╁皬緗戦〉錛屽悜鍙蟲嫋鍔錛屽氨鏄鏀懼ぇ緗戦〉銆
鎴戞兂鎶婄綉絝欓〉闈㈢殑瀛椾綋鍙樺皬鎬庝箞璁劇疆錛
1銆佹寜浣廋TRL閿錛岀劧鍚庤漿鍔ㄩ紶鏍囦腑杞錛屽氨浼氬彂鐜扮綉欏墊枃瀛椾細鍙樺ぇ鎴栫緝灝忥紝璋冨埌閫傚綋澶у皬灝卞彲浠ヤ簡銆
2銆佺偣鍑繪祻瑙堝櫒鍙充笅瑙掓樉紺烘瘮渚嬪浘鏍囷紝鎶婃瘮渚嬭皟鏁翠負100%灝卞彲鎮㈠嶆e父銆
3銆佺偣鍑繪爣棰樻爮涓鐨勬煡鐪嬧斺旂緝鏀撅紝閫夋嫨100%灝卞彲浠ヤ簡銆
4銆佸傛灉寰椾笉鍒拌В鍐籌紝嫻忚堝櫒鏈変釜淇澶嶅伐鍏鳳紝鍙浠ヤ慨澶嶆祻瑙堝櫒銆
5銆佸傝繕寰椾笉鍒拌В鍐籌紝鍙浠ラ噸鏂頒笅杞藉畨瑁呮祻瑙堝櫒銆
鏂囦歡澶瑰帇緙╂庝箞鎿嶄綔錛
榧犳爣鍙抽敭鐐瑰嚮瑕佸帇緙╃殑鐢佃剳鏂囨。錛屽脊鍑鴻彍鍗曞悗錛岀偣鍑繪坊鍔犲埌鍘嬬緝鏂囦歡銆
寮瑰嚭欏甸潰鍚庯紝涓哄帇緙╂枃浠跺懡鍚嶅拰閫夋嫨淇濆瓨娓犻亾錛岀偣鍑葷『瀹氥
灝卞畬鎴愬帇緙╂枃浠朵簡銆
開啟配置HTTP壓縮(GZip)
在IIS7中配置Gzip壓縮相比IIS6來說實在容易了許多,而且默認情況下就是啟用GZip壓縮的。如果沒有,則可以再功能視圖下找到「壓縮」項,進入之後就會看到「靜態內容壓縮」和「動態內容壓縮」兩個選項,勾上即可。
配置啟用壓縮的文件類型及其他選項
當開啟 GZip壓縮之後,IIS並不是對所有內容都啟用了壓縮,而是有選擇的進行壓縮。遺憾的是,我們無法直接在IIS7管理器中配置這些壓縮選項。我們首先需 要在C:/Windows/System32/inetsrv/config文件夾下找到applicationhost.config文件,打開之後找 到如下一節內容:
<httpCompression directory="%SystemDrive%/inetpub/temp/IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%/system32/inetsrv/gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
我們可以看到,IIS實際上是根據MIME類型來決定是否啟用HTTP壓縮的,以及壓縮比之類的選項。可以看出,圖片默認情況下是不被壓縮的,這是因為圖片的壓縮比太低了。
我們注意到,對於Javascript來說,上面對不同的mime類型配置了不同的壓縮方式。 Javascript有三種常見的Mime類型,text/javascript,application/x- javascript,application/javascript。這三種類型都是合法的,在現代瀏覽器中也不存在什麼差別。但是由於IIS7中Js文件的mime類型默認被設置為application/x-javascript,也就是說對於js文件,使用的是動態內容壓縮而不是靜態內容壓縮,因此會導致js文件有時經過壓縮的,有時卻沒有壓縮。
由於js文件通常穩定之後不會再被修改了,因此建議改成靜態壓縮——即把 dynamicTypes這一節中的application/x-javascript挪到靜態壓縮節中。這樣保證每次腳本都是被壓縮過返回的。
靜態壓縮及動態壓縮的區別
IIS7中的HTTP壓縮分為「靜態內容壓縮」和「動態內容壓縮」,其實這兩個名字第一次接觸很費解。什麼是動態內容什麼又是靜態內容?實際上,准 確的翻譯應該是「靜態壓縮」和「動態壓縮」。這兩個詞反應了IIS的壓縮行為。對於配置在 staticTypes節中的mime類型,將會啟用靜態壓縮,也就是說,當文件第一次被請求的時候,IIS會將其壓縮,然後放入臨時文件夾中,下次再有 人請求此文件時直接從臨時文件夾中取出壓縮後的版本而不用重新執行壓縮的過程。配置在dynamicTypes一節中的mime類型的http請求都將啟 用動態壓縮,即每一次請求,主機都會對請求的內容——可能是存放在文件系統中的靜態文件,也可能是ISAPI返回的內容——進行壓縮,而不會對其進行緩 存。這個壓縮比率因主機性能不同而會有所調整,所以我們在請求js文件的時候才會發現js文件有時壓縮有時不壓縮的情況。
顯而易見,靜態壓縮會佔用一定的存儲空間,但是速度快,而動態壓縮不佔用存儲空間,但是佔用CPU時間,而且壓縮比不恆定。而對於經過ISAPI的請求,則不能使用靜態壓縮方式。例如對於WCF返回的內容。
Ⅲ win2008 iis php 如何開啟壓縮
因為在做一個項目,項目裡面伺服器主要提供數據,但是數據多了文件就大了,比較浪費流量和時間,我們便用Gzip來處理。我在本機上是apache,伺服器上是IIS6.0,用的是php,那麼我就在這里分享一下。
IIS 的 GZIP 壓縮
1.首先備份 IIS 的配置文件, 復制C:.xml到另外的備份文件夾中. C:.xml是 IIS 的核心配置文件,該文件的完整性一但被破壞,IIS 將無法正常運行,嚴重到需要重新安裝系統.
2. 在開始菜單中啟動 Internet 信息服務(IIS)管理器,右鍵點擊「網站」屬性,打開「服務」選項卡,勾選「HTTP 壓縮」的兩個選項。「臨時目錄」和「臨時目錄最大容量」可根據需要自行設置。設置完成後點擊確定。
3. 右鍵點擊「網站」下方的 「Web服務擴展」,添加一個新的Web服務擴展,擴展名填寫為「HTTP Compression」或其他,都可以。「要求的文件」添加:c:windowssystem32inetsrvgzip.dll ,並勾選「設置擴展狀態為允許」,完成後點擊確定。
4.下面的步驟有些復雜,如果沒有確定的把握能理解,最好不要嘗試,右鍵點擊「Internet 信息服務的」「本地計算機」屬性,勾選「允許直接編輯配置資料庫」並確定。
5. 在開始菜單中運行 notepad C:.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
/*
*壓縮數據
*/
publicstaticfunctionob_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;//返回壓縮的內容,或者說把壓縮好的餅干送回工作台。
}