这是我参与 8 月更文挑战的第 10 天,活动详情查看: 8月更文挑战
http状态码
- 1xx 服务器收到请求
- 2xx 请求成功,如200
- 200 成功
- 3xx 重定向,如302
- 301 永久重定向(配合location,浏览器自动处理)
- 302 临时重定向(配合location,浏览器自动处理)
- 304 资源未被修改
- 4xx 客服端错误,如404
- 403 没有权限
- 404 资源未找到
- 5xx 服务端错误,如500
- 500 服务器错误
- 504 网关超时
协议和规范
- 就是一个约定
- 要求大家都跟着执行
- 不要违反规范,如IE浏览器
http常见的headers有哪些
- 常见的Request Headers
- Accept 浏览器可接收的数据格式
- Accept-Encoding 浏览器可接收的压缩算法,如gzip
- Accept-Languange 浏览器可接收的语言,如zh-CN
- Connection:keep-alive 一次TCP连接重复使用
- cookie
- Host 域名
- User-Agent(简称UA) 浏览器信息
- Content-type 发送数据的格式,如 application/json
- 常见的Response Headers
- Content-type 返回数据的格式,如application/json
- Content-length 返回数据的大小,多少字节
- Content-Encoding 返回数据的压缩算法,如gzip
- Set-Cookie 服务器端在客户端设置cookie
- 自定义Headers
- 缓存相关的Headers
- Cache-Control Expires
- Last-Modefied If=Modefied-Since
- Etag If-None-Match
什么是Restful API
- 传统的 methods
- get 获取服务器数据
- post 向服务器提交数据
- 简单的网页功能,就这2个操作
- 现在的 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
- psot请求: /api/update-blog?id=10
- get请求: /api/get-blog?id=10
- Restful API设计
- post请求 /api/blog
- patch请求 /api/blog/100
- get请求 /api/blog/100
- 传统API设计:
http缓存机制
存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存汇总查询数据,有则直接执行,不存在时从内存中获取。由于缓存的数据比内存快的多,所以缓存的作用就是帮助硬件更快的运行。
那些资源可以被缓存? 静态资源(js css img)
http缓存策略(强制缓存+协商缓存)
http缓存-强制缓存
- Cache-Control
- 在Response Headers中
- 控制强制缓存的逻辑
- 如 Cache-Control:max-age=31536000(单位是秒)
- Cache-Control的值
- max-age
- no-cache 不用强制本地缓存,交给服务端处理
- no-store 彻底禁用缓存;本地和代理服务器都不缓存,每次都从服务器获取
- private 只允许最终用户做缓存
- public 中间路由代理可做缓存
- Expires
-
同在Response Headers中
-
同为控制缓存过期
-
已被Cache-Control代替
-
http缓存- 协商缓存
- 服务器端缓存策略
- 服务器判断客户端资源,是否和服务端资源一致
- 一致则返回304,否则返回200和最新的资源
资源标识
- 在Response Headers中,有2种
- Last-Modified 资源的最后修改时间
- Etag资源的唯一标识(一个字符串,类似人的指纹)
Last-Modified 和 Etag
- 会优先使用Etag
- Last-Modified 只能精确到秒级
- 如果资源被重复生存,而内容不变,则Etag更精确
刷新操作方式,对缓存的影响
- 正常操作:地址栏输入url,跳转链接,前进后退等
强制缓存有效,协商缓存有效
- 手动刷新:F5, 点击刷新按钮,右击菜单刷新
强制缓存失效,协商缓存有效
- 强制刷新:ctrl+F5
强制缓存失效,协商缓存失效