2012-09-28 143 views
7

在ASP.NET MVC中,我使用了web.config來啓用和配置IIS7.5 gzip壓縮設置。但它們壓縮級別設置似乎已經完全沒有效果:設置IIS7 gzip壓縮級別

<scheme name="gzip" dynamicCompressionLevel="9" staticCompressionLevel="9"/> 

有了兩種設置壓縮級別= 0,我的主頁被gzip壓縮到9,290字節(從39623)

隨着壓縮級別= 9這兩個設置,我的主頁被gzip壓縮到9,290字節(從39623)

(使用招來檢查壓縮/非壓縮尺寸)

有壓縮量沒有區別 - 這是爲什麼?這發生在我的本地開發機器 - Windows 7上。我還沒有在我們的Win 2008 Web服務器上嘗試過它。在web.config中

完全壓縮設置:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="10" staticCompressionLevel="10"/> 
    <dynamicTypes> 
    <add mimeType="text/*" enabled="true"/> 
    <add mimeType="message/*" enabled="true"/> 
    <add mimeType="application/javascript" enabled="true"/> 
    <add mimeType="application/x-javascript" enabled="true"/> 
    <add mimeType="application/xml" 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="application/x-javascript" enabled="true"/> 
    <add mimeType="application/xml" enabled="true"/> 
    <add mimeType="*/*" enabled="false"/> 
    </staticTypes> 
</httpCompression> 
<urlCompression doStaticCompression="true" doDynamicCompression="true"/> 

編輯:顯然的最高水平是9本頁面說,這是10,但必須是不正確的http://www.iis.net/configreference/system.webserver/httpcompression/scheme。採用9級

回答

2

時,請仔細檢查你有dynamic compression installed

接下來你可能看重寫一些compression defaultsdynamicCompressionDisableCpuUsage設定爲90%,直到你去dynamicCompressionEnableCpuUsage下,壓縮會不會再次踢的問題仍然是相同的默認爲50%。我會建議提高後者。

Failed request tracing還建議在severalplaces SO上對這類問題,這可能會幫助你發現這個問題。

有以下幾個問題

How can I get gzip compression in IIS7 working?一些詳細的解答

Compression is not working

UPDATE:

的設置可以在應用層被鎖定,所以你應該嘗試運行以下:

appcmd set config -section:urlCompression /doDynamicCompression:true 

如果它仍然是一個問題,它可能是值得調整minFileSizeForComp其默認爲increased with later IIS versions

根據評論,也可以嘗試做動態的開始和離開靜態,而你試圖釘這個。

+0

對不起,我沒有設法回到這個問題,即使它一直在竊聽我。動態壓縮已安裝並正在運行。但更改壓縮級別不是 –

+0

@JK你有沒有嘗試將靜態壓縮設置爲false,只是做動態?我已經用其他建議更新了答案 – dove

1

如果您的主頁不是動態生成的,那麼dynamicCompressionLevel將不起作用。

由於默認情況下啓用了靜態壓縮,所以可能已經緩存了主頁的壓縮版本。您可以嘗試簡單地修改您的主頁(例如,只更改一個字符)。然後應該用新的設置重新壓縮。

默認的靜態壓縮可能已經在級別9。如果你看不到變化,你也可以試試的靜態等級降爲1來查看是否有差異。

您可能需要提供DLL:

<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" /> 
+0

看來動態壓縮模塊並不侷限於動態內容。在我自己的測試中,它會壓縮靜態內容,使其與MIME類型列表相匹配,但尚未壓縮。它應該被理解爲一個「動態壓縮模塊」,每個請求觸發一個模塊。雖然靜態模塊被觸發有點像處理文件的後臺進程,並且只有在其緩存中有壓縮輸出時纔開始提供壓縮輸出。 –

0

貴MVC管道包括壓縮過濾器?

如果是,則優先於IIS動態壓縮模塊。由於IIS動態壓縮模塊不會嘗試壓縮已經被壓縮的輸出,因此該模塊上的設置對您的MVC頁面沒有任何影響。