[英]Why is gzip compression not working on IIS 8.5?
我无法在 Server 2012 R2 机器上的 IIS 8.5 上使用 gzip 压缩。 我做了一些研究,并按照这些帖子中的说明进行了操作:
这是我的配置的相关部分:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" staticCompressionIgnoreHitFrequency="true">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<!-- I have read that dynamic compression increases server CPU load.
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
-->
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
此外,在 IIS 中,我将压缩设置为适用于大于 256 字节的任何内容。 我已经执行了iisreset。
尽管如此,我在 Chrome 或 IE 的开发控制台中没有看到提到的压缩,PageSpeed 仍然告诉我压缩内容。 我错过了什么简单的步骤?
很难理解发生了什么。假设您已正确完成所有 IIS 设置。
accept-encoding:gzip, deflate
。 很多时候,您的代理或负载平衡器可以修剪此标头,而此标头可能无法到达 IIS 服务器。因此,即使所有设置都正确,IIS 也永远不会压缩。要验证请求发生了什么以及 IIS 未压缩请求的原因,您可以执行以下操作。
正如对 OP 链接到的问题之一的回答中所述,请务必检查服务器上运行的任何防病毒软件。 就我而言,它是 ESET。 在禁用相关 ESET 设置之前,所有 IIS 压缩设置均无效。
我省略了设置的详细信息 - 我做了一些看起来很全面的禁用,然后让 IT 找出哪种确切设置最适合在保持安全性的同时压缩仍然有效。
我有一个类似的问题,是由 ESET 引起的,有一些奇怪的行为。 它适用于某些机器,但不适用于带有 eset 的机器,我花了一些时间才意识到。
发生的事情是 ESET 导致 chrome 将 http2 请求降级到 http 1.1 而没有压缩它们。 如果您打开网络并启用“协议”列,则可以看到它。 删除 eset 后,即使我强制 chrome 使用带有“--disable-http2”标志的 http1.1,它也能工作
无论如何,如果它仍然不起作用,我会尝试(除了其他答案):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.