簡體   English   中英

IIS 7動態內容壓縮不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM