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拉!
分享到:
相关推荐
crypto-js 和 pako实现数据加密, 解密
gzip模块需要 zlib 库 rewrite模块需要 pcre 库 ssl 功能需要openssl库
Gzip压缩无效的终极解决方案!.docx
ajax+pako.js实现gzip数据压缩上传,解决post数据过长问题 http://blog.csdn.net/jodenhe/article/details/70983781
内附两个文件,用于开启IIS6的Gzip压缩功能。 使用方法: 1.解压文件到某个目录 2.运行IIS6-SET-GZIP.cmd 3.等待黑窗口消失后就可以了 如果你有别的动态文件格式需要压缩,请修改 IIS6-SET-GZIP.cmd 如果你不想让...
VC6 gzip 压缩解压 测试代码 使用gzip.dll windows2003自带的gzip库,用于网络数据传输的压缩解压,兼容目前所有的网络服务器
使用C语言编写的GZIP压缩及解压源代码
gzip的Windows版,展开由gzip压缩的文件。gzip压缩文件有gzip.exe gzip.doc Readme Copying 四个子文件夹。 gzip 的Window版的gzip, 也就是gzip124xN.exe. 下载 gzip 的Window版的gzip, 也就是gzip124xN.exe。
Java使用gzip压缩Base64传输,以及解决classnotdefalut类找不到问题
PKCS11.7 + gzip.exe + asm.zip + MsVSVC++1.52.7z 博客: http://write.blog.csdn.net/postedit/7777369 用到的资源
jQuery+json+struts2+spring3(事务,AOP,IoC即DI)+hibernte3+EhCache+oscache+proxool+MySQL+SiteMesh+Gzip lj例子
A、首先我们来说下配置步骤,具体如下: 启用Gzip压缩步骤 1、单击“开始”—“管理工具”—“Internet 信息服务(IIS)管理器”,打开IIS管理器; 2、打开IIS管理器 在IIS管理器中双击本地计算机,右侧显示计算机中...
gzip源代码gzip源代码gzip源代码
易语言GZIP解压缩源码,GZIP解压缩,GZIP压缩,GZIP解压,InitDecompression,InitCompression,CreateDecompression,CreateCompression,ResetDecompression,ResetCompression,DestroyDecompression,DeInitCompression,...
HTTP chunked+gzip及浏览器兼容测试
Lossless compression algorithm GZIP related papers
在平时的开发中,我们会碰到数据量过大的问题,为了解决这个问题,我们可以用GZIP处理方式,J2ME本身没有提供GZIP压缩,但可以利用一些开源包。 上面此句用于解压GZIP,至是否要转换成DataInputStream还是...
JAVA文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,该项目使用流行的spring boot搭建,易上手和部署,支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,...
gzip源码,gzip压缩算法。GZIP学习
易语言gzip解压缩模块源码,gzip解压缩模块,PeLoader_LoadLibrary,PeLoader_FreeLibrary,PeLoader_GetProcAddress,PeLoader_GetEntryPoint,Call,初始化,GZIP压缩,GZIP解压