HTTP(三) 缓存
缓存
缓存优点
减少了冗余的数据传输;
缓解了网络瓶颈问题;
降低了对原始服务器的要求;
降低了距离时延;
再验证(新鲜度检测)
大部分缓存只有在客户端发起请求,并且副本旧得足以需要检测时,才会对副本进行再验证。
If-Modified-Since首部
服务器内容未被修改 304 Not Modified
服务器内容已被修改 200 OK
服务器上的对象被删除 404 Not Found
缓存命中率
中等规模的缓存,40%的命中率是合理的。
网状缓存
・根据URL在父缓存或原始服务器之间进行动态选择
・根据URL动态地选择一个特定的父缓存
・前往父缓存之前,在本地缓存中搜索已缓存的副本
・允许其他缓存对其缓存的部分内容进行访问,但不允许因特网流量通过它们的缓存
缓存的处理步骤
・接受:缓存从网络中读取抵达的请求报文
・解析:缓存对报文进行解析,提取出URL和各种首部
・查询:查看是否有本地副本可用,若没有,就获取一份副本
・新鲜度检测:查看副本是否新鲜,若不是,就询问服务器是否有任何更新
・创建相应:用新的首部和已缓存的主题构建一条响应报文
・发送:缓存通过网络将相应发回给客户端
・日志:缓存可选地创建一个日志文件条目来描述这个事务
Expires:绝对时间
Cache-Control:相对时间
缓存再验证
If-Modified-Since:Date再验证
该首部与Last-Modified服务器响应首部配合工作
If-None-Match:实体标签再验证
ETag标签 版本号
缓存优先级:
优先级递减
・Cache-Control: no-store
・Cache-Control: no-cache
・Cache-Control: must-revalidate
・Cache-Control: max-age
・Expires
缓存控制
Apache Web服务器控制缓存的机制
HTTP首部
・mod_headers
<Files *.html>
Header set Cache-Control no-cache
</Files>
・mod_expires
・mod_cern_meta
通过http-equiv控制HTML缓存
<meta http-equiv=”Cache-Control” content=”no-cache”>