浏览器缓存机制有两种,一种为强缓存,一种为协商缓存
- 对于强缓存,浏览器在第一次请求的时候,会直接下载资源,然后缓存在本地,第二次请求的时候,直接使用缓存。
- 对于协商缓存,第一次请求缓存且保存缓存标识与时间,重复请求向服务器发送缓存标识和最后缓存时间,服务端进行校验,如果失效则使用缓存
协商缓存相关设置
Exprires
:服务端的响应头,第一次请求的时候,告诉客户端,该资源什么时候会过期。Exprires
的缺陷是必须保证服务端时间和客户端时间严格同步。Cache-control:max-age
:表示该资源多少时间后过期,解决了客户端和服务端时间必须同步的问题,If-None-Match/ETag
:缓存标识,对比缓存时使用它来标识一个缓存,第一次请求的时候,服务端会返回该标识给客户端,客户端在第二次请求的时候会带上该标识与服务端进行对比并返回If-None-Match
标识是否表示匹配。Last-modified/If-Modified-Since
:第一次请求的时候服务端返回Last-modified
表明请求的资源上次的修改时间,第二次请求的时候客户端带上请求头If-Modified-Since
,表示资源上次的修改时间,服务端拿到这两个字段进行对比