IT技术博客大学习 共学习 共进步

Http 协议中ETag的用法

PHPor 的Blog 2010-06-03 13:20:48 浏览 3,502 次
大网站一般都是用F5或其它的负载均衡设备,用户的每次请求落在那台real server都是不一定的,一次偶然的机会,发现相同的一个资源在两次访问时,http头中的etag是不相同的,主要是该资源一定是没有被修改的,于是想到etag的算法中可能使用到了资源在不同real server上可能不同的因子,于是参考了一下apache的文档(因为我们使用的是apache),文档地址:

    http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html#fileetag

    默认情况下,etag和资源的inode有关系,而inode在不同的real server上基本是不相同的,于是,这样的etag还不如没有,因为这样该资源是每次都要返回全部信息的,可以修改apache配置文件,添加如下配置:

    FileETag MTime Size

    关于apache中etag的算法,可以参考源码: src/main/http_core.c 中的函数set_etag_bits

建议继续学习

  1. QQ上传大文件为什么这么快 (阅读 13,081)
  2. PHP处理Etag、lastModified和Expires (阅读 5,963)
  3. 在CGI中通过Etag和Cache-Control来控制流量,访问量及生效时间 (阅读 4,201)
  4. 基于资源的HTTP Cache的实现介绍 (阅读 3,783)
  5. ETag 简介 (阅读 3,662)
  6. Chrome 里 Max-age 和 ETag 的古怪逻辑 (阅读 3,620)