内容大纲
浏览器缓存机制
缓存规则
三个角色
- 客户端
- 缓存数据库
- 中间服务器+源服务器
三级缓存机制
from memory cache
不请求网络资源,资源在内存当中,一般字体、图片会存在内存当中
不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,也就是浏览器关闭以后,数据将不存在。
statusCode:200
from disk cache
不请求网络资源,在磁盘当中,一般非脚本会存在内存当中,如css等。
不访问服务器,直接读缓存,从磁盘中读取缓存,当kill进程时,数据还是存在。
statusCode:200
请求网络资源
访问服务期,请求相应的资源
- 未过期:不返回新资源,statusCode:304
- 已过期:返回新资源,statusCode:200
缓存校验
强缓存
请求的资源被标记为
强制缓存涉及到的请求头有:cache-control、expires (有这些请求/响应头的资源被标记为强缓存)
强制缓存涉及到的响应头有:cache-control、expires
只要请求一次,在有效期内
- expires :标记过期时间,格式为绝对时间 (缺陷:客户端时间与服务器时间可能不同步,不能保证资源的新鲜度)
请求头
- cache-control:
- no-cache:告诉中间服务器:我不要过期资源,给我去源服务器去取!
- no-store:告诉中间服务器:不要缓存我的请求和响应
- max-age
响应头
- cache-control:
- no-cache:不要缓存过期资源
- no-store:不要缓存请求或响应的任何内容
- must-revalidate:客户端必须再次向源服务器确认资源的有效性
- max-age:资源最大的有效期
- private: