再验证
缓存的新鲜度检测被称为HTTP再验证,通过If-Modified-Since首部,将这个首部添加到GET请求
中去,就可以告诉服务器,只有在缓存了对象的副本之后,又对其进行修改的情况下,才发送此对象
服务器收到GET If-Modified-Since请求时会发生的情况:
再验证命中
如果服务器对象未被修改,服务器会向客户端发送一个小的Http 304Not Modified响应
再验证未命中
如果服务器对象与已缓存副本不同,服务器向客户端发送一条普通的、带有完整内容的HTTp 200 OK响应
对象被删除
如果服务器对象已被删除了,服务器就返回一个404缓存也会将其副本删除
区分命中和未命中的情况
客户端有一种方法可以判断响应是否来自缓存,就是使用Date首部,将响应中Date首部的值与当前
时间进行比较,如果响应中的日期比较早,客户端通常就可以认为这是一条缓存响应。客户端也可以
通过Age首部来检测缓存的响应,通过这个首部可以分辨出这条响应的使用期。
缓存的处理步骤
接收
缓存从网络中读取抵达的报文
解析
缓存对报文进行解析,提取出URL和各种首部
查询
缓存查看是否有本地副本可用,如果没有,就获取一份副本(并将其保存在本地)
新鲜度检测
缓存查看已缓存副本是否足够新鲜,如果不是,就询问服务器是否有任何更新
创建响应
缓存会用新的首部和已缓存的主题来构建一条响应报文
发送
缓存通过网络将响应发回给客户端
日志
缓存可选地创建一个日志文件条目来描述这个事务