我正在尝试为 MIME 类型启用动态压缩application/json
。
在 applicationHost.config 中,我做了以下更改:
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />
我还尝试使用以下命令解锁该部分:
appcmd unlock config /section:system.webserver/httpcompression
我的 web.config 设置(与 applicationHost.config 相同,但具有附加的 mimetype):
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
</httpCompression>
但响应未被压缩。我知道设置是正确的,因为如果我将 mimetype 直接添加到 applicationHost.config,它就会起作用。
我已启用失败请求跟踪并且没有产生任何错误。
答案1
尝试添加 mime 类型:
<add mimeType="application/json; charset=utf-8" enabled="true" />
答案2
我遇到了同样的问题,即尝试让 IIS(在我的情况下是 IIS 10)进行 gzip,application/json
但发现了一种解决方法。
我尝试编辑 ApplicationHost.config 以及 web.config,但没有成功。IIS 只是忽略了 .json 数据的任何压缩设置。但它很乐意对任何其他你告诉它压缩的 mimetype 进行 gzip 压缩。因此,我text/json
在 web.config 中将 mimetype 更改为,现在我有了 gzip 压缩的响应:
<system.webServer>
<staticContent>
<remove fileExtension=".json" />
<mimeMap fileExtension=".json" mimeType="text/json" />
</staticContent>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/json" enabled="true"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/json" enabled="true"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
当然,这可能会破坏其他东西 - 因为现在你的回应已经Content-Type:text/json
答案3
仅当您使用 IIS 10 时才可以从 web.config 中使用 HttpCompression。在 IIS 7.5 上,您必须在 appHost.config 上使用它。
我也一直在努力,直到我找到了那个信息在这篇文章中。