缓存(一)

再验证
缓存的新鲜度检测被称为HTTP再验证,通过If-Modified-Since首部,将这个首部添加到GET请求
中去,就可以告诉服务器,只有在缓存了对象的副本之后,又对其进行修改的情况下,才发送此对象
服务器收到GET If-Modified-Since请求时会发生的情况:

  • 再验证命中

    如果服务器对象未被修改,服务器会向客户端发送一个小的Http 304Not Modified响应

  • 再验证未命中

    如果服务器对象与已缓存副本不同,服务器向客户端发送一条普通的、带有完整内容的HTTp 200 OK响应

  • 对象被删除

    如果服务器对象已被删除了,服务器就返回一个404缓存也会将其副本删除

区分命中和未命中的情况

客户端有一种方法可以判断响应是否来自缓存,就是使用Date首部,将响应中Date首部的值与当前
时间进行比较,如果响应中的日期比较早,客户端通常就可以认为这是一条缓存响应。客户端也可以
通过Age首部来检测缓存的响应,通过这个首部可以分辨出这条响应的使用期。

缓存的处理步骤

  1. 接收

    缓存从网络中读取抵达的报文

  2. 解析

    缓存对报文进行解析,提取出URL和各种首部

  3. 查询

    缓存查看是否有本地副本可用,如果没有,就获取一份副本(并将其保存在本地)

  4. 新鲜度检测

    缓存查看已缓存副本是否足够新鲜,如果不是,就询问服务器是否有任何更新

  5. 创建响应

    缓存会用新的首部和已缓存的主题来构建一条响应报文

  6. 发送

    缓存通过网络将响应发回给客户端

  7. 日志

    缓存可选地创建一个日志文件条目来描述这个事务