Skip to content

Latest commit

 

History

History
94 lines (47 loc) · 2.53 KB

File metadata and controls

94 lines (47 loc) · 2.53 KB

http缓存

强制缓存

概念

服务器通过设置缓存字段让客户端先请求本地缓存

设置的字段:Cache-Control:

位置: Response Headers 中,控制强制缓存的逻辑。

Cache-Control 有哪些值:

max-age:缓存最大过期时间,max-age=3153600(单位是秒)。

no-cache:可以在客户端存储资源,每次都必须去服务端做新鲜度校验,来决定从服务端获取新的资源(200)还是使用客户端缓存(304)。

no-store:永远都不要在客户端存储资源,永远都去原始服务器去获取资源。

协商缓存

概念

服务端判断客户端资源,是否和服务端资源一样。

一致则返回 304,否则返回 200 和最新的资源。

资源标识:在 Response Headers 中,有两种。

Last-Modified:资源的最后修改时间。

服务端拿到 if-Modified-Since 之后拿这个时间去和服务端资源最后修改时间做比较,如果一致则返回 304 ,不一致(也就是资源已经更新了)就返回 200 和新的资源及新的 Last-Modified。

Etag:资源的唯一标识(一个hash计算出来的字符串)

Etag 是服务端对资源按照一定方式(比如 contenthash)计算出来的唯一标识,就像人类指纹一样,传给客户端之后,客户端再传过来时候,服务端会将其与现在的资源计算出来的唯一标识做比较,一致则返回 304,不一致就返回 200 和新的资源及新的 Etag。

两者比较:

优先使用 Etag。

Last-Modified 只能精确到秒级。

如果资源被重复生成,而内容不变,则 Etag 更精确

三种刷新操作对 http 缓存的影响

正常操作:地址栏输入 url,跳转链接,前进后退等。

手动刷新:f5,点击刷新按钮,右键菜单刷新。

强制刷新:ctrl + f5,shift+command+r。

正常操作:强制缓存有效,协商缓存有效。

手动刷新:强制缓存失效,协商缓存有效。

强制刷新:强制缓存失效,协商缓存失效。

http 状态码

状态码分类

1xx - 服务器收到请求。

2xx - 请求成功,如 200。

3xx - 重定向,如 302。

4xx - 客户端错误,如 404。

5xx - 服务端错误,如 500。

常见状态码

200 - 成功。

301 - 永久重定向(配合 location,浏览器自动处理)。

302 - 临时重定向(配合 location,浏览器自动处理)。

304 - 资源未被修改。

403 - 没权限。

404 - 资源未找到。

500 - 服务器错误。

504 - 网关超时