`
ihuashao
  • 浏览: 4725447 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

IE6上Gzip+Etag问题的解决方案

阅读更多

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拉!
分享到:
评论

相关推荐

    Javascript 实现Base64 + GZIP + AES 加解密

    最后,压缩包中的“base64+gzip+aes加解密”文件很可能是包含示例代码或者相关实现的文件,可以帮助开发者更好地理解并实践上述概念。 总的来说,结合Base64、GZIP和AES的加解密技术,可以在JavaScript环境中实现...

    Gzip压缩无效的终极解决方案!.docx

    本文将提供一个终极解决方案,帮助您解决 Gzip 压缩无效的问题。 首先,我们需要了解 Gzip 压缩的基本概念。Gzip 是一种数据压缩格式,通过使用 LZ77 算法和 Huffman 编码来压缩数据。Gzip 压缩可以减少网页的大小...

    VC6 gzip 压缩解压 测试代码 使用gzip.dll

    在本文中,我们将深入探讨如何在Visual C++ 6(简称VC6)环境中使用gzip库进行数据的压缩和解压。gzip是一种广泛应用于网络数据传输的压缩格式,它基于Deflate算法,能够有效地减小文件大小,从而提高传输效率。...

    ajax+pako.js实现gzip数据压缩上传,解决post数据过长问题

    为了解决这个问题,可以采用数据压缩技术,如gzip,配合JavaScript库pako.js来压缩数据,然后再通过Ajax发送。以下将详细讲解如何利用ajax和pako.js实现gzip数据压缩上传。 首先,理解gzip压缩原理。gzip是一种广泛...

    gzip.rar_C gzip源码_c语言gzip_gzip压缩_gzip解压_poetryfem

    gzip是Linux环境中广泛使用的文件压缩工具,其源代码主要由C语言编写。本文将深入探讨gzip的原理、C语言实现细节以及如何进行gzip压缩和解压缩。 首先,gzip基于著名的DEFLATE算法,该算法结合了LZ77(一种字典压缩...

    IIS6-SET-GZIP.rar

    标题"IIS6-SET-GZIP.rar"提示我们这个压缩包可能包含了与IIS6(Internet Information Services 6.0)相关的设置,特别是关于GZIP压缩的配置或工具。IIS6是微软在Windows Server 2003系统中提供的一个Web服务器版本,...

    IIS6 开启 Gzip 压缩

    内附两个文件,用于开启IIS6的Gzip压缩功能。 使用方法: 1.解压文件到某个目录 2.运行IIS6-SET-GZIP.cmd 3.等待黑窗口消失后就可以了 如果你有别的动态文件格式需要压缩,请修改 IIS6-SET-GZIP.cmd 如果你不想让...

    window版的gunzip+gzip工具,实现文件压缩和解压缩工具

    总的来说,window版的gunzip和gzip工具为Windows用户提供了解决方案,使得他们能够在熟悉的环境中处理Unix/Linux系统常见的gz格式压缩文件。这对于跨平台的IT工作环境,尤其是在涉及MySQL等数据库管理时,显得尤为...

    gzip源码 (可离线安装gzip)

    这个源码包"gzip源码 (可离线安装gzip)"提供了一种在没有网络连接的情况下安装gzip的可能性,这对于那些需要在隔离环境或者没有网络的服务器上部署gzip的情况非常有用。下面将详细介绍gzip工具以及如何利用提供的...

    WIN2003-IIS6开启GZIP工具

    标题"WIN2003-IIS6开启GZIP工具"涉及到的主要技术是Windows Server 2003操作系统上的Internet Information Services (IIS) 6.0 Web服务器,以及GZIP压缩技术。GZIP是一种广泛使用的数据压缩格式,常用于在网络上传输...

    httpwatch(IE9.IE8,IE6)

    总的来说,httpWatch是一款不可或缺的性能分析工具,尤其对于需要兼容IE9, IE8, IE6的老版本浏览器的项目,它可以帮助开发者在不理想的浏览器环境中找出性能瓶颈,从而提升整体用户体验。通过对每个请求的细致分析,...

    gzip 静态解压缩库c++ builder 2007版本,源代码

    gzip是一种广泛使用的数据压缩算法,尤其在网络传输和存储大量数据时。它的全称是GNU Zip,最初由Jean-loup Gailly和Mark Adler开发,并且是开源的。gzip不仅可以用于单个文件的压缩,还可以与Unix-like系统的管道...

    gzip的Windows版 gzip.exe

    gzip的Windows版,展开由gzip压缩的文件。gzip压缩文件有gzip.exe gzip.doc Readme Copying 四个子文件夹。 gzip 的Window版的gzip, 也就是gzip124xN.exe. 下载 gzip 的Window版的gzip, 也就是gzip124xN.exe。

    Java GZip压缩使用以及解决包找不到问题

    在Java编程中,GZip压缩是一种常见的数据...解决“类找不到问题”关键在于正确管理类路径,确保所有必要的库文件都可供JVM访问。对于大型项目,使用构建工具如Maven或Gradle可以帮助自动管理依赖,避免这类问题的发生。

    GZIP_gzip_

    GZIP是一种广泛使用的无损数据压缩算法,尤其在IT领域中扮演着重要角色。这个压缩格式基于DEFLATE算法,该算法结合了LZ77(Lempel-Ziv)编码和霍夫曼编码,旨在高效地减小文件大小,同时能够完全恢复原始数据。 ...

    nginx-简单图片服务器解决方案.docx

    【Nginx 简单图片服务器解决方案】 在IT行业中,构建高效且可扩展的图片服务器对于提升用户体验至关重要。特别是随着互联网应用的发展,图片服务的需求日益增长,如何处理大量图片的上传、存储和访问成为了一个重要...

    IIS启用GZIP压缩js、css无效的原因及解决方法.docx

    本文主要探讨的是在IIS服务器上启用GZIP压缩针对JavaScript(js)和CSS文件无效的问题及其解决方案。 IIS(Internet Information Services)是微软提供的一个Web服务器,支持多种功能,包括GZIP压缩。当用户发现IIS...

    STM32移植gzip

    在STM32上实现gzip,需要编写C语言代码来调用gzip库,如zlib库,这个库包含了gzip的实现。在STM32上移植gzip,主要包括以下步骤: 1. **环境准备**:配置开发环境,例如使用Keil uVision或STM32CubeIDE,确保工具链...

Global site tag (gtag.js) - Google Analytics