为什么gzip压缩在IIS 8.5上不起作用?

uqdfh47h  于 2023-05-07  发布在  其他
关注(0)|答案(4)|浏览(248)

我无法在Server 2012 R2计算机上的IIS 8.5上使用gzip压缩。我做了一些研究,并遵循这些帖子中的说明:

  1. How to enable GZIP compression in IIS 7.5
  2. Compression in IIS 8.5 not successful, stating ALREADY_CONTENT_ENCODING
  3. GZip Compression On IIS 7.5 is not working
  4. gzip compression not working with IIS 8.5
    下面是我的配置的相关部分:
<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仍然告诉我压缩东西。我错过了哪一步?

ct3nt3jp

ct3nt3jp1#

这将是很难理解发生了什么。假设你已经做了所有的IIS设置正确。

  • 用于检查压缩是否正常工作,您如何访问网站。例如,如果您使用FQDN www.example.com,请尝试使用localhost url。这将确保您的IIS设置正确。
  • 如果localhost工作正常,而您的完全限定域名不工作,则问题可能在网络中。为了压缩工作,浏览器需要发送请求头accept-encoding:gzip, deflate。很多时候,你的代理或负载均衡器可以修剪这个头,这个头可能无法到达IIS服务器。所以如果所有的设置都正确,IIS将永远不会压缩。

若要验证请求发生了什么以及IIS为什么不压缩请求,可以执行以下操作。

  • 请确保安装了Failed Request tracing

  • 配置失败请求定义

  • 转到失败请求跟踪模块

  • 单击边栏x1c 0d1x上的添加

  • 启用所有内容,状态为200-999

  • 并完成配置。

  • 现在重现问题,您将在目录C:\inetpub\logs\FailedReqLogFiles\W3SVC中获得捕获的跟踪。

  • 打开跟踪文件(对于每个请求,将生成一个文件。在IE中打开跟踪文件(确保请求详细信息与您要验证的请求匹配),然后转到紧凑视图

  • 搜索压缩并检查原因

5f0d552i

5f0d552i2#

正如OP链接到的一个问题的答案中所提到的,请确保检查服务器上是否运行任何防病毒软件。在我的情况下,它是ESET。在禁用相关ESET设置之前,所有IIS压缩设置都不会生效。
我省略了设置的细节--我做了一个看起来很漂亮的全面禁用,并把它留给了IT部门,以找出哪个确切的设置最适合压缩,同时保持安全性。

rggaifut

rggaifut3#

我有一个类似的问题,是由ESET与一些奇怪的行为造成的。它在一些机器上工作,但在有eset的那台上不工作,我花了一些时间才意识到。
发生的事情是ESET导致chrome将http 2请求降级为http1.1并且不压缩它们。如果打开网络并启用“协议”列,则可以看到。删除eset后,它的工作,即使我强迫 chrome 使用http1.1与'--disable-http 2'标志
无论如何,如果它仍然不起作用,我会尝试(除了其他答案):

  • 检查不同客户端的行为是否相同(在我的情况下,只有开发机器有问题)
  • 部署一个简单的静态站点(事件默认值)并测试
  • 重新安装iis
  • 检查iss服务器管理器上的设置,配置编辑器/ system.webServer/httpCompression集合,更改压缩级别
ccgok5k5

ccgok5k54#

我也遇到了同样的问题,发现必须重新启动WWW服务才能更改适用的压缩级别https://learn.microsoft.com/en-us/iis/configuration/system.webServer/httpCompression/scheme

相关问题