HTTP缓存机制:强缓存和协商缓存
缓存可以减少网络IO的消耗,提高访问速度。主要是获取数据的方式,判断是需要从服务端获取数据还是使用自身缓存数据,多数应用于网路传输不稳定的移动端,或者数据相对固定的页面。在HTTP响应Response的报文头,通过请求头中的标志来判断使用哪种数据获取机制,没有标志则发出请求获得最新的数据。
响应规则
通过Response响应头中的Cache-Control来配置缓存规则
-
public:所有内容都将被缓存(客户端和代理服务器都可缓存)
-
private:所有内容只有客户端可以缓存,Cache-Control的默认取值
-
no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
-
no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
-
max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效
Expires也是控制缓存的配置项
配置Expires是为服务器返回该请求结果缓存的到期时间,即再次发起该请求时,如果客户端的时间小于Expires的值时,直接使用缓存结果,不过Cache-Control优先级比Expires高,且存在客户端与服务端误差问题会配置导致失效,所以主要还是使用Cache-Control配置缓存规则
内存缓存和硬盘缓存(同时也需要考虑客户端存储方式)
- 内存缓存(from memory cache)读取速度更快,但进程关闭,则该进程的数据会清空。
- 硬盘缓存(from disk cache)速度比内存缓存慢,进程不会影响文件
静态资源图片和比较小的文件大多会默认使用内存缓存,浏览器可以更好的节省渲染成本,但大文件一般会写入硬盘内存,进行I/O操作,重新解析该缓存内容。
网友评论