HTTP服务器使用内容协商来根据客户端的Accept-Encoding标头提供单个URL标识或gzip编码.
现在说我们在客户端和httpd之间有一个像squid这样的代理缓存.
如果代理缓存了URL的两种编码,它如何确定要提供的服务?
非gzip实例(最初未提供服务Vary)可以提供给任何客户端,但编码实例(具有Vary: Accept-Encoding)只能发送到具有与Accept-Encoding原始请求中使用的相同标头值的客户端.
例如Opera发送,"deflate, gzip, x-gzip, identity, *;q=0"但IE8发送"gzip, deflate".根据规范,缓存不应该在两个浏览器之间共享内容编码的缓存.这是真的?
我已经将IIS7配置为gzip静态内容.
http://www.coderjournal.com/2008/04/iis-7-compress-javascript-gzip/
但是,文件不会"保持"gzip状态.
这是我的用例:
这没有意义 - 如果原始版本没有更改,是否应该在所有后续请求中传送gzip压缩版本的静态文件?
注意:我使用Firefox和Firebug通过检查Content-Encoding标头来验证gzip压缩内容.
有没有办法知道HTTP响应的消息体是否用Base64编码?
我了解到内容传输编码不是HTTP头的一部分.
那么,哪个HTTP标头表示内容是用Base64编码的?我认为内容编码仅用于压缩.
我正在使用WWW :: Mechanize并且当前正在Content-Encoding: gzip我的代码中处理带有' '标头的HTTP响应,首先检查响应头,然后使用IO :: Uncompress :: Gunzip来获取未压缩的内容.
但是我想透明地这样做,以便像form(),links()等WWW :: Mechanize方法处理和解析未压缩的内容.由于WWW :: Mechanize是LWP :: UserAgent的子类,我更愿意使用LWP :: UA ::处理程序来执行此操作.
虽然我已经取得了部分成功(例如我可以打印未压缩的内容),但我无法以我可以调用的方式透明地执行此操作
$mech->forms();
Run Code Online (Sandbox Code Playgroud)
总结:如何"替换"$ mech对象中的内容,以便从那时起,所有WWW :: Mechanize方法的工作方式就好像Content-Encoding从未发生过一样?
我将非常感谢您的关注和帮助.谢谢
您好我想要提供我内容的纯文本版本.所以我有一个单独的模板.我打电话render_to_response用mimetype="text/plain",但我想告诉浏览器中打开该页面的HTTP响应内容是UTF-8编码.我该怎么做(例如我需要添加什么render_to_response)?
在我们的Apache Web服务器中,我们启用了deflate压缩.这提高了我们网站的速度.我们可以通过查看值"Content-Encoding:gzip"在IE以外的浏览器中验证此deflate压缩.我们使用像firebug这样的工具来识别这个内容编码值.
我们很高兴看到内容大小如何减少.
问题是:我们希望使用IE Web开发人员工具(F12)在IE中验证相同的内容.但我们无法验证,因为内容编码密钥根本没有出现在那里.
我们如何验证gzip/deflate压缩是否在IE浏览器中有效?
更新:
我从以下链接中了解到IE开发人员工具即使处理gzip压缩内容也不会显示.
如果后端已经设置了“content-encoding”标头,是否有任何聪明的方法可以欺骗 nginx 停止 gzip?
Nginx 配置为对 php fastcgi 后端的输出进行 gzip 压缩。
这在 99% 的情况下都很有效。
除了极少数情况外,php 会发送一个原始 gzip 压缩文件并附加一个Content-Encoding: gzip标头。
不幸的是,Nginx 会继续尝试第二次对该内容进行 gzip 压缩。
生成双content-encoding: gzip content-encoding: gzip标头和双编码 gzip 正文。
大多数现代浏览器都可以处理这个问题,比如 Firefox、Chrome。
IE8 不能,Safari 移动版不能,旧版 Safari 5 for Windows 不能 - 相反,它们会显示乱码的 gzip 压缩内容,因为它合并了内容编码标头,并且仅对 gzip 压缩正文进行一次解码。
感谢您的任何想法。
HTTP响应头是否Content-Length与解码主体之前或之后的长度有关Content-Encoding: gzip?
entity http content-encoding http-content-length http-headers
这两个HTTP标头有什么区别?
content-encoding ×10
gzip ×3
http ×3
http-headers ×2
perl ×2
base64 ×1
caching ×1
django ×1
entity ×1
fastcgi ×1
httpresponse ×1
iis ×1
iis-7 ×1
iso-8859-1 ×1
lwp ×1
nginx ×1
php ×1
proxy ×1