目录
前段时间面试发现缓存这一块的内容问的蛮多的,于是就去学习了一下缓存相关的内容,将问的比较多的内容总结如下:
一、缓存
1、存储将被用到的数据,让数据访问更快
- 命中:在缓中找到了请求的数据存
- 不命中/穿透:缓存中没有需要的数据
- 命中率:命中次数/总次数
- 缓存大小:缓存中一共可以存多少数据
- 清空策略:如果缓存空间不够数据如何被替换
二、缓存清理
1、清空策略
- 先进先出
- 根据使用的频率
- 最近使用(移掉太久没有使用的缓存)
三、HTTP缓存
1、Cache-Control(协议头):
定义所有缓存都要遵守的行为
- 可缓存性:
值 | 含义 |
public | 允许所有方缓存 |
private | 只允许浏览器缓存 |
no-cache | 每次必须先询问服务器资源是否已经更新 |
no-store | 不使用缓存 |
- 缓存期限
值 | 含义 |
max-age | 秒(存储周期) |
s-maxage | 秒(共享缓存如代理等,存储周期) |
2、强制缓存:
强制使用缓存,不去服务器比对;(缓存生效不再发送请求)
3、协商缓存:
协商使用缓存,每次需要向服务器请求对比,缓存生效不传回body
- 协商缓存-1:last-modified:最后一次发请求的时间
- 协商缓存-2:E-Tag