在某些IIS7 web.config压缩设置方面需要帮助


9

我正在尝试在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页面说它可以在:-中使用

  • Machine.config
  • ApplicationHost.config
  • 根应用程序Web.config
  • 应用程序Web.config
  • 目录Web.config

那么,我们能否以编程方式在web.config文件中基于每个网站设置这些设置?(这是一个Application Web.config文件...)我做错了什么?

欢呼:)

编辑:我被问到我怎么知道HTTP1.0没有被压缩。我正在使用“失败的请求跟踪规则”,该规则会报告:

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

Answers:


3

请密切注意以下事实: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

您还可以appcmd用来设置应用程序级别的设置(这可能会容易得多)。
Pure.Krome

2

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

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

引用:


1

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

如果您可以看到客户端发送的标头(如果您正在Firefox或IEHTTP中进行测试,则由测试客户端本身提供,如果使用Firefox或IEHTTP,则可以使用Firebug或类似方法;如果您正在IE中进行测试,则可以通过标头显示;或者使用外部工具来嗅探流量)看到像

Accept-Encoding: compress, gzip, deflate

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

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

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


我正在测试使用失败的请求跟踪规则不会压缩HTTP1.0请求,该规则将向后报告:-DYNAMIC_COMPRESSION_START DYNAMIC_COMPRESSION_NOT_SUCESS原因:3原因:NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome,2009年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.