为什么gzip压缩无法在IIS 8.5上运行?

时间:2017-07-21 19:29:48

标签: asp.net iis gzip iis-8.5 http-compression

我无法在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
  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仍然告诉我压缩内容。我错过了一个简单的步骤?

3 个答案:

答案 0 :(得分:3)

很难理解发生了什么。假设您已完成所有IIS设置。

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

要验证请求的内容以及IIS未压缩请求的原因,您可以执行以下操作。

  • 确保您已安装Failed Request tracing
  • 配置失败的请求定义
    • 转到“失败的请求跟踪模块”
    • 单击侧栏上的“添加” Failed Request tracing
    • 启用所有内容,状态为 200-999
    • 完成配置。
    • 现在重现该问题,您将获得在目录C:\ inetpub \ logs \ FailedReqLogFiles \ W3SVC中捕获的跟踪。
    • 打开跟踪文件(对于每个请求,将生成一个文件。在IE中打开跟踪文件(确保请求详细信息与您要验证的请求相匹配)并转到紧凑视图 Failed Request tracing Compact View
    • 搜索压缩并检查原因 Dynamic Compression failed Reason

答案 1 :(得分:1)

如对OP链接到的问题之一的回答中所述,请确保检查服务器上是否正在运行任何防病毒软件。就我而言,是ESET。在禁用相关的ESET设置之前,没有IIS压缩设置有效。

我遗漏了设置的详细信息-我做了一个似乎很全面的禁用,将其留给了IT人员,以找出哪种最合适的设置最适合压缩,同时仍保持安全性。

答案 2 :(得分:0)

我有一个类似的问题,是由ESET引起的,具有某些奇怪的行为。 它可以在某些机器上运行,但不能在具有eset的机器上运行,这花了我一些时间才能实现。

发生的事情是ESET导致Chrome将http2请求降级为http 1.1,而不压缩它们。可以看到是否打开网络并启用“协议”列。删除eset之后,即使我强制chrome使用带有'--disable-http2'标志的http1.1,

无论如何,如果仍然无法解决,我会尝试(除了其他答案):

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