Chinaunix
标题:
HTTP 1.1的一些细节:Cache机制
[打印本页]
作者:
inside2004
时间:
2008-01-15 22:52
标题:
HTTP 1.1的一些细节:Cache机制
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
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2