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