几句话讲清楚浏览器缓存
一. 缓存无处不在
- cpu是有缓存的。可以减少和内存的交互,因为需要经过主板。
- 数据库也是有缓存的。因为数据库是以文件形式存储在硬盘上的,读取硬盘速度远远小于读取内存的速度。
- 服务器上也是有缓存的。比如membcache,redis,减少对数据库以及静态资源的读取。
- 浏览器也是有缓存的(304 Not Midified)。请求过一次的资源放在本地,加快请求速度。
二. 缓存的优点
- 减少延迟,加快速度
- 减少带宽消耗
三. 浏览器缓存的关键参数
- Expires/Cache-control : 缓存时间;当这个时间没过的时候,不去服务器检查,即不发起http请求,直接从缓存中取;都存在的时候,以Cache-control为准。响应头中。
- ETag : 当前资源在服务器的唯一标识。响应头中。
- Last-Modified : 文件修改时间。响应头中。
- If-Modified-Since : 下一次请求的请求头中,值为上次请求资源是的Etag值
- If-None_Match : 下一次请求的请求头中。当资源过期时(即Expires/Cache-control判断),向服务器请求时
If-None_Match
会带上ETag
的值,然后由服务器决定返回304或200
四. 关于304跳转
服务器告诉浏览器资源没有改变,由浏览器从缓存中读取。
304的跳转经过了服务器,200(from cache)没有经过服务器0