【问题标题】:IIS6 not doing gzip compression when including Via header in requestIIS6 在请求中包含 Via 标头时不进行 gzip 压缩
【发布时间】:2009-11-19 11:57:29
【问题描述】:

我有一些静态内容通过 CDN。我正在使用 IIS6 的内置压缩(gzip 和 deflate)来处理静态内容,当我请求它时它工作正常。但是,当 CDN 对内容进行初始请求时,它不会被压缩返回。因此,他们没有压缩内容来转发给请求它的人。 (是的,这引发了人们使用无法处理压缩的浏览器从 CDN 请求 [压缩] 内容的问题。- 不过,我们暂时将其放在一边)

这是一个不带“Via”标头的请求示例:

HEAD /flash/swfobject.js HTTP/1.1 用户代理:curl/7.19.7 (i386-pc-win32) 主机:本地主机:9120 接受: */* 连接:保持活动 接受编码:gzip

它返回一个压缩响应:

HTTP/1.1 200 正常 内容长度:4357 内容类型:application/x-javascript 内容编码:gzip 到期:格林威治标准时间 2020 年 1 月 1 日星期三 00:00:00 最后修改时间:格林威治标准时间 2009 年 11 月 18 日,星期三 15:36:52 接受范围:字节 变化:接受编码 服务器:Microsoft-IIS/6.0 日期:格林威治标准时间 2009 年 11 月 19 日星期四 10:27:50

但是,如果我在请求中包含“Via”标头(如 CDN 所做的那样),则结果会以未压缩的形式返回:

请求:

HEAD /flash/swfobject.js HTTP/1.1 用户代理:curl/7.19.7 (i386-pc-win32) 主机:本地主机:9120 接受: */* 连接:保持活动 通过:1.1 204.160.105.17:80(足迹 4.5/FPMCP) 接受编码:gzip

回复:

HTTP/1.1 200 正常 内容长度:14602 内容类型:application/x-javascript 到期:格林威治标准时间 2020 年 1 月 1 日星期三 00:00:00 最后修改时间:格林威治标准时间 2009 年 11 月 18 日,星期三 15:36:54 接受范围:字节 服务器:Microsoft-IIS/6.0 日期:格林威治标准时间 2009 年 11 月 19 日星期四 10:29:52

是的,这些演示在请求中使用了“localhost”。不过,我使用来自不同网络上的不同机器的实际域名得到了相同的结果。

那么两个问题:

  1. 这可能是 IIS 由于额外的标头而未应用压缩吗?如果是这样,我该怎么办?

  2. 如何判断代理是否在返回内容之前对其进行解压?

额外问题 3 - 我可以做些什么来进一步调查这个问题?

我知道问题 332049,但响应中包含标头,而不是请求。

【问题讨论】:

标签: http iis iis-6 gzip http-via-header


【解决方案1】:

我在自己研究这个问题时偶然发现了你的问题。我发现了一个article on MSDN,简短的回答是 Via 标头用于代理,而代理通常会弄乱压缩。您可以选择删除标头,也可以更改 IIS 元数据库中的设置 (HcNoCompressionForProxies="FALSE")。两种选择我都成功了。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多