IE6上Gzip+Etag问题的解决方案
来源:互联网 发布:张爱玲一生 知乎 编辑:程序博客网 时间:2024/05/09 11:20
http://www.blogjava.net/emu/archive/2011/02/27/345262.html
这个问题不是太广为人知,但也算不上新鲜知识了,IE6如果接收到一个gzip压缩的http响应,那么这个响应中的Etag信息会被抛弃,此时只能依赖last-modified时间来设计cache策略。某些类型的Vary值据说也会导致相同的问题。
为了这个问题emu在http头上动了n多手术,甚至把200响应状态硬生生换成206等状态,IE6一直都非常顽固的不肯吐出If-None-Match信息。几乎要放弃了。
丢开这个bug,我们来看问题的实质是什么。实质是,我们有一个叫做Etag的,响应内容的一个hash值,需要在响应的时候从服务器送给浏览器,并且要求在浏览器下次请求同一个路径的时候把这个hash值送回给服务器校验。http中规定了,我们可以在http header内容中通过一个叫做Etag的header来做这个事,但是现在浏览器不给力啊,有啥别的手段可以做相同的事情呢?
答案一点也不难想,我们一天到晚在实现“把一个值从服务器送给浏览器,并让浏览器吧它送回服务器”这件事的时候都是用什么手段的呢?没错啦,就是cookie。而且cookie还支持path!
因此需要做的事情就是,server在发现User-Agent是IE6的时候,在返回gzip内容的时候出了要送Last-Modified时间之外,不要送Etag头了,改为返回一个set-cookie头:
Set-Cookie: etag=hash; pagh=/mypath
服务器在下次收到请求的时候,如果收到了If-Modified-Since信息,表明客户端有一份当前请求的cache,就可以从cookie里面验证etag值来决定是否返回304拉!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/emu/archive/2011/02/27/6210721.aspx
- IE6上Gzip+Etag问题的解决方案
- IE6上Gzip+Etag问题的解决方案
- IE6遇到Nginx的gzip问题
- 关于ETag和Gzip的基本认知和使用
- ie6下png阴影问题的解决方案
- IE6浏览器中的gzip压缩输出问题
- 修复IE6 PNG不透明问题的最佳解决方案
- 一个修复IE6 PNG不透明问题不错的解决方案
- IE6下载文件名过长导致乱码问题的解决方案
- ie6 span 换行IE6中float:right换行问题的替代解决方案
- ie6 span 换行IE6中float:right换行问题的替代解决方案
- Silverlight 2.0在IE6 SP2上的虚线边框问题
- ETag与Last-Modified头信息用途上的区别
- IE6 躲猫猫BUG的解决方案
- IE6 fixed的完美解决方案
- IE6 不兼容的解决方案
- IE6 调用gzip压缩后JavaScript不执行的解决方法
- ie6对nginx经过gzip的数据无法显示
- Flex:Web报表引擎——MyReport 2.3.6.0新功能
- oracle temporary table
- linux驱动编译不通过的问题解决
- 在ubuntu10.10版本中如何利用framebuf来驱动fb0设备
- POSIX线程:API
- IE6上Gzip+Etag问题的解决方案
- 无法通过“控制面板”卸载 Office 2003、Office 2007 或 Office 2010 套件的情况下,如何才能将其卸载?
- python模块之smtplib: 用python发送SSL/TLS安全邮件
- 我的第一个led实验--基于arm6410
- Rational Rose 2003安装配置
- 如何查询oracle表的前几条记录
- 黑马程序员训练营:网络编程
- Android: 启动init.rc 中service的权限问题
- 笑笑