免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1288 | 回复: 0
打印 上一主题 下一主题

HTTP 1.1的一些细节:Cache机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-15 22:52 |只看该作者 |倒序浏览
HTTP 1.1的一些细节:Cache机制
Du XiaoGang
    Cache机制可能是HTTP 1.1协议中最复杂的一个组成部分,它的目的有两个:
        1, 降低网络上发送HTTP请求的次数,这采用"过期"机制(Expiration Mechanism).
        2, 降低网络上完整回复HTTP请求包的次数,这采用"确证"机制(Validation Mechanism).
    首先描述"过期"机制的模型.
     HTTP Cache机制的最理想目标是使客户端根本不发起非必要的请求.
    它的基本原理是为每个被请求实体(Entity)设定一个内容将变更的时间点,从该实体第一次被请求后到这个时间点到达之前实体的内容是不变的,因而可以直接使用Cache中缓存的内容满足针对该实体的后续请求,而不必每次由源HTTP服务器做响应.
    HTTP服务器通过两种实体头(Entity-Header)来实现"过期"机制:Expires头和Cache-Control头的max-age子项.
    其次是"验证"机制模型.
    HTTP服务器为每个作为响应发送的实体附加一个"验证子",当Cache中的响应"过期"后,Cache将该验证子发送给HTTP源服务器以验证是否该响应已确实过期. 如果确认过期则源服务器发送新响应包,否则只发送改变的实体头,这种机制可有效节省带宽.
    HTTP服务器通过两种方式实现该"验证子":ETag以及Last-Modified Date.
验证子的特点在于它会随着所代表实体的变化而变化,就像是实体的指纹,而且验证子可分为强验证子和弱验证子两种,强验证子会严格随实体变化而变化,弱验证
子则只是在实体发生显著变化时才变化.
    以下是与Cache相关的实体头:
    Date: 响应(包含实体)产生的时间.
    Expires: 时间值,该时间点之前可以认为对应实体内容不变.
    Cache-Control:Cache命令,主要有以下子项:
        public: 实体可被public类型的Cache缓存.
        private: 实体只对某个用户有效,不能被public类型的Cache缓存.
        no-cache: 实体不可被缓存.
        no-store: 实体不能被存储在非易失存储器中,应当在用完后被立即清除.
        max-age: 实体保持有效的最长时间,其优先级高于Expires指定时间.
    Age: 一般由响应路径中的Cache产生,表示自从响应发出到现在在Cache中所经过的时间.
    ETag: "验证子",一般为强性.
    Last-Modified: "验证子",一般为弱性,表示实体最后变更的时间.
    If-Match/If-None-Match/If-Modified-Since/If-Unmodified-Since:
条件验证语句,Match搭配ETag,当符合条件时执行请求. Modified搭配Last-Modified验证子,符合条件时执行请求.
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10449/showart_465134.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP