一、缓存的基本概念
对于http来说,缓存服务器首先是一个代理服务器
程序具有局部性使得缓存成为可能
程序具有局部性:
时间局部性: 过去访问到的数据,随后可能也会被访问到
空间局部性:过去访问到的数据,它周围的数据随后可能也会被访问到
缓存都是以“key-value”形式缓存在本地
key:访问路径,url,hash,
value:web content
热点数据:
命中率:hit/(hit+miss)
文档命中率:从文档个数进行衡量
字节命中率:从内容大小进行衡量
缓存对象的生命周期:
定期清楚,不可 缓存对象(用户私有数据)
缓存空间耗尽:
LRU算法:最近最少使用
缓存处理的步骤:
接收请求--》解析请求(提取请求的url及各种首部)--》查询缓存--》新鲜度检测--》创建响应报文--》发送响应--》记录日志
新鲜度检查机制:
1)过期日期:
HTTP/1.0 Expires(过期日期,绝对时间,时区不同时会有问题)
HTTP/1.1 Cache-Control 缓存控制机制
max-age-N ,也兼容Expires
2)有效性再验证:revalidate,使用条件式请求首部
如果原始内容未改变,则仅响应首部(不附带body部分),响应码304;
如果原始内容发生改变,则正常响应,响应码200;
如果原始内容消失,则响应404,此时缓存中的cache object也应该删除
条件式请求首部:
If-Modified-Since:基于请求内容的时间戳作验证
If-Unmodified-Since
If-Mstch:
If-None-Match: Etag:扩展标签
原文:http://xiexiaojun.blog.51cto.com/2305291/1715780