一、http 状态码
1. 状态码分类
- 1xx 服务器收到请求。
- 2xx 请求成功,如 200。
- 3xx 重定向,如 302。
- 4xx 客户端错误,如 404。
- 5xx 服务器错误,如 500。
2. 常见状态码
- 200 成功。
- 301 永久重定向(配合 location,浏览器自动处理)。
- 302 临时重定向(配合 location,浏览器自动处理)。
- 304 资源未被修改。
- 404 资源未找到。
- 403 没有权限。
- 500 服务器错误。
- 504 网关超时。
二、http methods
1. 传统 methods
- get 获取服务器的数据。
- post 向服务器提交数据。
2. 现在 methods
- get 获取数据
- post 新建数据
- patch/put 更新数据
- delete 删除数据
3. Restful API
- 传统 API 设计:把每个 url 当作一个功能。
- Restful API 设计:把每个 url 当作一个唯一的资源。
如何设计成一个资源?
- 尽量不用 url 参数。
- 用 method 表示操作类型。
三、http headers
1. 常见的 Request Headers
Header 解释 Accept 浏览器可接收的数据格式 Accept-Encoding 浏览器可接收的压缩算法,如 gzip Accept-Language 浏览器可接收的语言,如 zh-CN connection:keep-alive 一次 TCP 连接重复使用 cookie HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器 Host 指定请求的服务器的域名和端口号 User-Agent (简称 UA )浏览器信息 Content-type 发送数据的格式,如 application/json
2. 常见的 Responce Headers
Header 解释 Content-type 返回数据的格式,如 application/json Content-length 返回数据的大小,多少字节 Content-Encoding 返回数据的压缩算法,如 gzip Set-Cookie 设置Http Cookie Cache-Control 控制强制缓存的逻辑
3. 缓存相关的 headers
属于响应头:
Responce Headers 值 说明 Cache-Control no-cache, no-store, max-age, public, private 在HTTP1.1版本之后,控制浏览器是否可以缓存资源、强制缓存校验、缓存时间 Expires 资源缓存过期时间 在HTTP1.1版本之前,如果与 Cache-Control
同时设置,则只有Cache-Control
的设置生效。Last-modified 请求的资源最近更新时间 弱校验, 根据文件修改时间,可能内容未变,不精确 Etag 文件指纹(hash码、时间戳等可以标识文件是否更新) 强校验,根据文件内容生成精确 属于请求头:
Request Headers 值 说明 If-None-Match 缓存响应头中的 ETag 值 发送给服务器比对文件是否更新(精确) If-Modified-Since 缓存响应头中的 Last-Modified 值 发送给服务器比对文件是否更新(不精确)
四、http 缓存
1. 关于缓存的介绍
- HTTP文件缓存是基于HTTP协议的浏览器端文件缓存机制。
- 在文件重复请求的情况下,浏览器可以根据HTTP响应的协议头信息判断是从服务器端请求文件还是从本地读取文件。
- 哪些资源可以被缓存?---- 静态资源(js css img)
2. http 缓存策略(强制缓存 + 协商缓存)
强制缓存:
- 强制缓存在缓存数据未失效的情况下(即Cache-Control的max-age没有过期或者Expires的缓存时间没有过期),那么就会直接使用浏览器的缓存数据,不会再向服务器发送任何请求。
cache-control 常用值:
属性值 说明 max-age 资源缓存的最大时间 no-cache 不强制缓存,但有可能协商缓存 no-store 既不强制缓存,又不协商缓存,反正就是不缓存(气完了)
private 仅向特定用户返回响应 public 可向任意方提供响应缓存 关于 Expires:
- 同在 Response Headers 中。
- 同为控制缓存过期。
- 已被 Cache-Control 代替。
协商缓存(对比缓存):
- 服务器端缓存策略
- 服务器判断客户端资源,是否和服务器端资源一样。
- 一致则返回 304,否则返回 200 和最新资源。
Last-Modified 和 Etag:
- 会优先使用 Etag。
- Last-Modified 只能精确到秒级。
- 如果资源被重复生成,而内容不变,则 Etag 更精确。
3. http 缓存流程图
4. 刷新操作方式,对缓存的影响
实现方式 缓存策略 正常操作 地址栏输入 url、跳转链接、前进后退等 强制缓存有效,协商缓存有效 手动刷新 F5、点击刷新按钮、右击菜单刷新 强制缓存失效,协商缓存有效 强制刷新 Ctrl + F5 强制缓存失效,协商缓存失效