我有一些通过 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”。不过,我使用来自各种网络上的各种机器的实际域名得到了相同的结果。
那么两个问题:
这可能是 IIS 由于额外的标头而没有应用压缩吗?如果是这样,我该怎么办?
如何判断代理是否在返回内容之前对其进行解压缩?
奖励问题 3 - 我可以做些什么来进一步调查这个问题?
我知道问题 332049,但响应中有标题,而不是请求。