助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
> http 状态码和http methods,仅仅使一个约束规范。可以更改(不建议) ### http 状态码 * 状态码分类 * 1xx:服务器收到请求 * 2xx:请求成功,如 200 * 3xx:重定向,如 302 * 4xx:客户端错误,如 404 * 5xx:服务端错误,如 500 * 常用状态码 * 200 成功 * 301 永久重定向 配合 location,浏览器自动处理。如换域名,浏览器会存缓存。 * 302 临时重定向 配合 location,浏览器自动处理。如搜索引擎的跳转链接、短网址的跳转。 * 304 资源未被修改,两次请求的内容是相同的 * 404 资源未找到 * 404 没有权限 * 500 服务器错误 * 504 网关超时 ### http methods * 传统 methods * get 获取服务器的数据 * post 向服务器提交数据 * 现在的 methods * get 获取数据 * post 新建数据 * patch/put 更新数据 * delete 删除数据 ### Restful API * 一种新的 API 设计方法(早已推广使用) * 传统 API 设计:把每个 url 当做一个功能 * Restful API 设计:把每个 url 当做一个唯一的资源 #### 如何设计成一个资源? * 尽量不用 url 参数 * 传统 API 设计:`/api/list?pageIndex=2` * Restful API 设计:`/api/list/2` * 用 method 表示操作类型 * 传统 API 设计,如 * post 请求 `/api/create-blog` 创建博客 * post 请求 `/api/update-blog?id=100` 更改博客内容 * get 请求 `/api/get-blog?id=100` 获取博客内容 * Restful API * post 请求 `/api/blog` 新建博客 * patch 请求 `/api/blog/100` 更新博客 * get 请求 `/api/blog/100` 获取博客内容 ### http headers * 常见的 Request Headers:请求头 * ![image-20210307142126063](https://image.mdashen.com/pic/image-20210307142126063.png) * Accept:浏览器可接收的数据格式 * Accept-Encoding 浏览器可接收的压缩算法,如 gzip * Accept-Languange 浏览器可接收的语言,如 zh-CH * Connection: keep-alive 一次 TCP 连接重复使用 * User-Agent:简称UA,浏览器信息 * Content-type 发送数据的格式,如 application/json * 常见 Response Headers:响应头 * ![image-20210307142233196](https://image.mdashen.com/pic/image-20210307142233196.png) * Content-type 返回数据的格式,如 application/json * Content-length 返回数据的大小,多少字节 * Content-Encoding 返回数据的压缩算法,如 gzip * 自定义 header:如,Authentication;常用语接口鉴权 * 缓存相关的 headers * ![image-20210307195941177](https://image.mdashen.com/pic/image-20210307195941177.png) ### http 缓存 ![image-20210307210410090](https://image.mdashen.com/pic/image-20210307210410090.png) #### http 缓存-强制缓存 ![image-20210307203735748](https://image.mdashen.com/pic/image-20210307203735748.png) ![image-20210307203900106](https://image.mdashen.com/pic/image-20210307203900106.png) ##### Cache-Control * Response Headers 中 * 控制强制缓存的逻辑 * 例如:cache-control: max-age=2592000 单位是秒 * cache-control的值 * **max-age**:缓存的最大过期时间 * **no-cache**:不用强制缓存,交给服务端处理 * no-store:不缓存,让服务端再次返回 * private:用户缓存 * public:允许中间路由、代理进行缓存 ###### Expires * 同在 Response Headers 中 * 同为控制缓存过期 * 已被 Cache-Control 代替 #### http缓存-协商缓存(对比缓存) ![image-20210307204931779](https://image.mdashen.com/pic/image-20210307204931779.png) * 服务端缓存策略,服务端判断这个文件是否需要缓存 * 服务器判断客户端资源,是否和服务端资源一样 * 一致则返回 304 ,负责返回 200 和最新的资源 ##### 资源标识 * 在 Response Headers 中,有两种 * last-Modified 资源的最后修改时间 * Etag 资源的唯一标识(一个字符串,类似人类的指纹) * 两者会优先使用 Etag * Last-Modified 只能精确到秒级 * 如果资源被重复生成,而内容不变,则 Etag 更精确 ##### Last-Modified ![image-20210307205350512](https://image.mdashen.com/pic/image-20210307205350512.png) ##### Etag ##### ![image-20210307205627943](https://image.mdashen.com/pic/image-20210307205627943.png) #### 刷新页面对缓存的影响 ##### 三种刷新方式 * 正常操作:地址栏输入url、跳转链接、前进后退 * 手动刷新:F5、点击刷新按钮、右击菜单刷新 * 强制刷新:ctrl + F5 ##### 不同刷新操作、不同缓存策略 * 正常操作:强制缓存有效,协商缓存有效 * 手动刷新:强制缓存失效,协商缓存有效 * 强制刷新:强制缓存失效,协商缓存失效