启用 HttpCompression

启用 HttpCompression

我正在尝试启用Http压缩适用于Json文件,但system.WebServer/httpCompressionIIS 中的配置编辑器选项中缺少。我已将配置应用于Web.Config我的站点,并且它在我的开发计算机(Windows 10 - IIS 10)上运行良好,但部署到测试服务器时它不起作用。

这些是我们的Web.config设置:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" staticCompressionIgnoreHitFrequency="true" dynamicCompressionDisableCpuUsage="70" dynamicCompressionEnableCpuUsage="50">
      <remove name="gzip" />
      <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" />

      <dynamicTypes>
        <remove mimeType="text/*" />
        <remove mimeType="message/*" />
        <remove mimeType="application/javascript" />
        <remove mimeType="application/json" />
        <remove mimeType="image/svg+xml" />
        <remove mimeType="*/*" />

        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/javascript" enabled="true" />
        <add mimeType="application/json" enabled="true" />
        <add mimeType="image/svg+xml" enabled="true" />
        <add mimeType="*/*" enabled="false" />
      </dynamicTypes>
      <staticTypes>
        <remove mimeType="text/*" />
        <remove mimeType="message/*" />
        <remove mimeType="application/javascript" />
        <remove mimeType="application/xml" />
        <remove mimeType="image/svg+xml" />
        <remove mimeType="*/*" />

        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/javascript" enabled="true" />
        <add mimeType="application/xml" enabled="true" />        
        <add mimeType="image/svg+xml" enabled="true" />
        <add mimeType="*/*" enabled="false" />
      </staticTypes>
    </httpCompression>
    <urlCompression doStaticCompression="true" doDynamicCompression="true" />
    <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="00:00:05" />

我已经运行命令来解锁相应的部分:

%systemroot%\system32\inetsrv\APPCMD unlock config /section:httpCompression

%systemroot%\system32\inetsrv\APPCMD unlock config /section:serverRunTime

我们已经安装了静态和动态内容压缩功能。

我们遗漏了什么?为什么站点的配置编辑器中缺少 HttpCompression 选项?为什么不在服务器上压缩我们的 json 文件?

更新 我们可以找出部分问题。我们使用 Notepad++ 编辑 apphost.config 文件,由于本文中描述的问题邮政看起来我们编辑的是正确的文件,但实际上并非如此。这是由于使用 32 位应用程序编辑文件时发生冲突而导致的问题。不过,Windows 10 中似乎不再存在此问题。

我们使用记事本编辑了 applicationHost.config 文件,HttpCompression 选项开始显示在 IIS 管理器中,但它仍然不起作用。

答案1

在服务器 2012 R2 上看不到它的原因是ApplicationHost.config

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />

在 Windows 10 上它看起来像这样:

<section name="httpCompression" allowDefinition="Everywhere" overrideModeDefault="Allow" />

在 Server 2016 TP5 上:

<section name="httpCompression" overrideModeDefault="Allow" />

AppHostOnly意味着,这只能在 ApplicationHost.config 中更改

这引出了几个问题:

为什么从 IIS 8.5 到 IIS 10 会发生这种变化,他们是否做了一些事情来支持站点级别的 httpCompression 配置,或者这只是他们在以前的 IIS 版本中遗漏的东西?

如果我们将其更改为allowDefinition="Everywhere"IIS 8.5,它会起作用吗?

您能将您的httpCompression节点放在<location path=...>applicationhost.config 中的节点内吗?

现在我还没有任何答案,但至少你知道为什么它不起作用。

答案2

找出应用程序主机配置在 IIS 服务器文件上。

更改名为 httpCompression 的部分。

<section name="httpCompression" allowDefinition="Everywhere" overrideModeDefault="Allow" /> 

然后打开IIS服务器管理器,打开压缩, 查看启用动态内容压缩 查看启用静态内容压缩

然后打开配置编辑器在管理面板上。导航下拉菜单..System.Webserver -> HttpCompression ->静态压缩忽略命中频率设置真的

System.web->缓存->outputCache->省略VaryStar设置真的

希望这对 IIS 8.5 有效。

此致。

相关内容