[英]IIS 7 dynamic content compression not working
我的IIS 7動態內容壓縮無法通過服務器日志的驗證。...發送/接收的字節與打開和關閉壓縮相同。
讓我仔細閱讀到目前為止已經完成的事情,以確保正確完成:
1)安裝動態壓縮模塊(DUH)
2)啟用動態壓縮
3)在system.webserver / httpCompression下的web.config中,我添加了DynamicCompressionDisableCpuUsage = 100和DynamicCompressionEnableCpuUsage = 99以確保盡可能頻繁地進行壓縮。 服務器負載通常為0%到2%CPU,因此這完全不是問題。
4)我將system.webserver / httpCompression / scheme dynamicCompressionLevel從0更改為7,因為默認值為0
5)我添加了mime類型並在system.webserver / httpCompression / dynamicTypes下設置了enabled = true,並通過請求分析器確保mimetype確實正確
6)之后,我什至重新啟動了站點/回收的應用程序池。
7)我什至添加了mime-types來包含字符集,我讀過的字符集有時會影響動態壓縮。
我的流量仍然沒有減少! 是什么賦予了!? 我什至將system.webserver / httpCompression / minFileSizeForComp設置為1000B,盡管這僅用於靜態壓縮,但認為它可能會以某種方式延續到動態壓縮中。 日志中發送的字節數與未壓縮時相同。
這是我的web.config部分,僅供參考:
<system.webServer>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" dynamicCompressionDisableCpuUsage="100" dynamicCompressionEnableCpuUsage="99" minFileSizeForComp="1000">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="7" staticCompressionLevel="7"/>
<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="application/json" enabled="true"/>
<add mimeType="application/json; charset=utf-8" enabled="true"/>
<add mimeType="application/json; charset=UTF-8" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
這是我參考來解決這些設置的其他幾個問題……看來我已經嘗試了本書中的所有技巧。
如何在IIS7中獲得gzip壓縮?
https://serverfault.com/questions/200041/how-do-determine-the-dynamiccompressiondisablecpuusage-setting-on-iis7
按照此ServerFault答案: https ://serverfault.com/a/125156/117212-您無法在web.config中更改httpCompression,它需要在applicationHost.config文件中完成。 這是我在Azure Web角色中使用的代碼來修改applicationHost.config文件並添加mime類型以進行壓縮:
using (var serverManager = new ServerManager())
{
var config = serverManager.GetApplicationHostConfiguration();
var httpCompressionSection = config.GetSection("system.webServer/httpCompression");
var dynamicTypesCollection = httpCompressionSection.GetCollection("dynamicTypes");
Action<string> fnCheckAndAddIfMissing = mimeType =>
{
if (dynamicTypesCollection.Any(x =>
{
var v = x.GetAttributeValue("mimeType");
if (v != null && v.ToString() == mimeType)
{
return true;
}
return false;
}) == false)
{
ConfigurationElement addElement = dynamicTypesCollection.CreateElement("add");
addElement["mimeType"] = mimeType;
addElement["enabled"] = true;
dynamicTypesCollection.AddAt(0, addElement);
}
};
fnCheckAndAddIfMissing("application/json");
fnCheckAndAddIfMissing("application/json; charset=utf-8");
serverManager.CommitChanges();
}
ServerManager
來自NuGet中的Microsoft.Web.Administration
程序包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.