需要有关一些 IIS7 web.config 压缩设置的帮助

需要有关一些 IIS7 web.config 压缩设置的帮助

我正在尝试在 web.config 文件中配置 IIS7 压缩设置。我正在尝试启用 HTTP 1.0 请求以进行 gzip 压缩。

MSDN 有所有信息关于这里

是否可以在我自己网站的 web.config 文件中包含此配置信息?还是我需要在应用程序级别进行设置?目前,我的 web.config 中有该代码...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

它不工作:( HTTP 1.1 请求被压缩,但 1.0 没有。

上面的 MSDN 页面说它可以用于:-

  • 机器配置
  • 应用程序主机配置
  • 根应用程序 Web.config
  • 应用程序 Web.config
  • 目录 Web.config

那么,我们可以在 web.config 文件中以编程方式为每个网站设置这些设置吗?(这是一个应用程序 Web.config 文件...)我做错了什么?

欢呼:)

编辑:有人问我如何知道 HTTP1.0 没有被压缩。我正在使用失败请求跟踪规则,它会报告:-

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

答案1

请密切注意 IIS 7.x web.config 设置的

noCompressionForProxies="false"

在 web.config 级别不受支持。必须在 C:\Windows\System32\inetsrv\config\ApplicationHost.config 中设置,如下所示:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

更改设置后,请务必执行 IIS 重置。

如果客户端的 Web 请求具有 HTTP“Via”标头,则 IIS 会确定该请求来自代理,如下所示:

Via: 1.1 foo

答案2

经过一番研究,它在应用程序级别默认处于“锁定”状态。因此,需要将其“解锁”。这可以通过命令行或通过(额外下载)iis7 管理工具来实现。

例如。appcmd set config -section:urlCompression /doDynamicCompression:true

参考文献:

答案3

您如何测试 HTTP1.0 请求是否未被压缩?可能是您使用的客户端没有告诉服务器它可以接受压缩响应?

如果你可以看到客户端发送的标头(由测试客户端本身呈现,如果你在 Firefox 中测试,则使用 Firebug 或类似工具;如果你在 IE 中测试,则使用 IEHTTPHeaders;或者通过使用外部工具嗅探流量),你应该会看到类似

Accept-Encoding: compress, gzip, deflate

在那里某处。如果客户端没有通知服务器它可以接受压缩响应,那么无论服务器端的其他设置如何,服务器都不会发送压缩响应。

另一个问题可能是,如果您通过代理服务器进行测试,而代理服务器本身就是代理服务器。在这种情况下,noCompressionForProxies 设置可能会优先并阻止压缩响应的可能性。

需要注意的一点是,某些发送 HTTP1.0 请求的客户端和代理(通常是较旧的软件)在收到压缩响应时无法正确处理,因此如果您确实启用了对 HTTP1.0 请求的响应的压缩,请确保在您预计访问者/用户使用的所有客户端/代理软件中测试您的网站/应用程序。如果您可以保证目标受众将使用某些软件(例如,如果该应用程序仅适用于内部公司网络),那么这个问题就不大,但除此之外,还有很多组合需要测试,这就是为什么大多数服务器完全禁用 1.0 请求的压缩的原因。

相关内容