我很难让 IIS 7 正确压缩来自 ASP.NET MVC 的 Json 结果。我在 IIS 中启用了静态和动态压缩。我可以用 Fiddler 验证普通的 text/html 和类似的记录是否被压缩。查看请求,存在接受编码 gzip 标头。响应的 mimetype 为“application/json”,但未压缩。
我发现问题似乎与 MimeType 有关。当我包含时mimeType="*/*"
,我可以看到响应已正确压缩。如何在不使用通配符 mimeType 的情况下让 IIS 进行压缩?我认为这个问题与 ASP.NET MVC 生成内容类型标头的方式有关。
CPU 使用率远低于动态限制阈值。当我检查来自 IIS 的跟踪日志时,我可以看到它由于找不到匹配的 mime 类型而无法压缩。
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="false">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
</dynamicTypes>
<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="application/json" enabled="true" />
</staticTypes>
</httpCompression>