1

我的 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 类型以包含字符集,我读过的地方有时会影响动态压缩。

我仍然没有减少流量!是什么赋予了!?我什至将 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

4

1 回答 1

2

根据此 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来自Microsoft.Web.AdministrationNuGet 中的包。

于 2013-12-12T19:14:23.523 回答