


IIS6和IIS7對(duì)靜態(tài)文件gzip壓縮方式
事實(shí)上,iis7比iis6在靜態(tài)壓縮上有了較大的更新,在IIS6中,靜態(tài)壓縮是在一個(gè)不同的線程上進(jìn)行的,所以在收到一個(gè)HTTP請(qǐng)求后,第一 個(gè)發(fā)送給瀏覽器的HTML版本是沒(méi)有壓縮過(guò)的,而同時(shí)IIS6會(huì)開(kāi)始使用一個(gè)不同的線程對(duì)這個(gè)文件進(jìn)行壓縮并且將這個(gè)壓縮后的版本長(zhǎng)期保存在壓縮文件的緩 存文件夾內(nèi)。而在以前,也就是IIS6服務(wù)器上,在壓縮完成之后凡是對(duì)該被壓縮版本的靜態(tài)文件的HTTP請(qǐng)求,IIS6都會(huì)直接從緩存文件夾中直接調(diào)用壓 縮后的版本并返回給瀏覽器。
但是在IIS7中,壓縮是在主線程上進(jìn)行的,而且為了節(jié)省壓縮的成本,IIS7不對(duì)所有的HTTP請(qǐng)求而只對(duì)哪些經(jīng)常會(huì)被用戶訪問(wèn)的靜態(tài)文件進(jìn)行壓 縮版本的長(zhǎng)期保存,這也就是為什么我在之前第一次訪問(wèn)沒(méi)有壓縮,短期內(nèi)再次訪問(wèn)返回的是壓縮版本,但是再過(guò)幾分鐘訪問(wèn)返回的又是未壓縮版本的原因。這里我 們可以理解為IIS7并沒(méi)有將壓縮版本實(shí)際保存到緩存文件夾中,而是只在服務(wù)器內(nèi)存中做了保存,或者是臨時(shí)將壓縮版本保存到緩存文件夾中,一會(huì)之后進(jìn)行刪 除。
而IIS7定義什么文件是經(jīng)常訪問(wèn)的符合壓縮標(biāo)準(zhǔn)的方法是system.webServer/serverRuntime中的以下兩個(gè)屬 性,frequentHitThreshold和frequentHitTimePeriod 。如果IIS在frequentHitTimePeriod時(shí)間段內(nèi)接收到了對(duì)某個(gè)靜態(tài)文件的超過(guò)frequentHitThreshold閘值次數(shù)的訪 問(wèn),那么IIS7就會(huì)像IIS6一樣壓縮該靜態(tài)文件并且將這個(gè)壓縮后的版本長(zhǎng)期保存在壓縮文件的緩存文件夾內(nèi)。如果用戶訪問(wèn)網(wǎng)站某文件時(shí),已經(jīng)在緩存文件 夾中存在該文件的緩存版本,那么IIS7是不會(huì)再判斷frequentHitThreshhold這個(gè)邏輯而是直接返回壓縮版本給瀏覽器。
這種設(shè)置的確很蛋疼,但是微軟官方給出的答復(fù)是這樣有利用提高服務(wù)器性能。。。那么如果想要讓IIS7能夠向IIS6一樣做壓縮的話,有兩種解決方法,當(dāng)然都是修改frequentHitThreshold和frequentHitTimePeriod這兩個(gè)值:
第一種是在web.config中添加以下內(nèi)容,將frequentHitThreshold調(diào)至1,將frequentHitTimePeriod調(diào)制10分鐘
<system.webServer>
<serverRuntime enabled="true"
frequentHitThreshold="1"
frequentHitTimePeriod="00:10:00"/>
</system.webServer>
第二種方法是打開(kāi)%windir%\system32\inetsrv\appcmd.exe,然后再命令行界面中輸入以下命令字符串,然后回車
set config -section:system.webServer/serverRuntime -frequentHitThreshold:1
微軟官方建議比較不激進(jìn)的辦法是不要調(diào)低frequentHitThreshold而是提高frequentHitTimePeriod,這樣對(duì)服務(wù)器性能更適中。這里要提到的是,對(duì)于擁有VPS的朋友們,建議可以手動(dòng)設(shè)置,而虛擬主機(jī)用戶能不能設(shè)置就得看服務(wù)商了。
關(guān)鍵字:服務(wù)器、IIS、瀏覽器、壓縮
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解