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