http缓存:强缓存和协商缓存
强缓存(无HTTP请求,无需协商)
-
定义
-
直接读取本地缓存,无需跟服务端发送请求确认
-
http返回状态码是200
-
from memory cache或者from disk cache
-
不同浏览器返回的信息不一致的
-
-
-
对应的Http header有
-
Cache-Control
-
Expires
-
协商缓存(有HTTP请求,需协商)
-
浏览器发现本地有该资源的缓存
-
向服务器询问是否是最新的
-
缓存版本可用:返回304(Not Modified) http状态码
-
对应的Http header有:
-
Last-Modified(缺点只能精确到1s)
-
ETag
-
| Http Header | 描述 |
|---|---|
| Cache-Control | 指定缓存机制,优先级最高 |
| Pragma | http1.0字段,已废弃,为了兼容一般使用no-cache |
| Expires | http1.0字段,指定缓存的过期时间 |
| Last-Modified | http1.0字段,资源最后一次的修改时间 |
| ETag | 唯一标识请求资源的字符串,会覆盖Last-Modified |
浏览器缓存
- 把页面信息保存到用户本地电脑硬盘里
原理
第一次请求
-
浏览器通过http的header报头
- 附带Expires,Cache-Control,Last-Modified/Etag向服务器请求
-
服务器记录第一次请求的Last-Modified/Etag
再次请求
-
请求头附带Expires,Cache-Control,If-Modified-Since/Etag向服务器请求
-
服务器根据第一次记录的Last-Modified/Etag和再次请求的If-Modified-Since/Etag做对比,判断是否需要更新
- 未发生变化,客户端不需要重新下载,返回304响应