# HTTP
# topic
- http 常见的状态码有哪些
- http常见的header 有哪些
- 什么是Restful API
- 描述一下http 的缓存机制(重要)
# http 状态码
- 状态码分类
- 常见状态码
- 关于协议和规范
# 状态码分类
- 1xx 服务器收到请求
- 2xx 请求成功,如200
- 3xx 重定向,如 302
- 4xx 客户端错误,如404
- 5xx 服务端错误,如500
# 常见状态码
- 200 成功
- 301 永久重定向(配合 location ,浏览器自动处理)
- 302 临时重定向(配合 location ,浏览器自动处理)
- 304 资源未被修改(不属于重定向)比如说有缓存
- 403 没有权限
- 404 资源未找到
- 500 服务器错误
- 504 网关超时
# 关于协议和规范
- 就是一个约定
- 要求大家都跟着执行
- 不要违反规范,例如IE浏览器
# http methods
- 传统的methods
- get 获取服务器的数据
- post 向服务器提交数据
- 简单的网页功能,就这两个操作
- 现在的methods
- get 获取数据
- post 新增数据
- patch/put 更新数据
- delete 删除数据
- Restful API
- 一种新的API设计方法(早已推广使用)
- 传统API设计:把每个 url 当作一个功能
- restful API 设计:把每个 url 当做一个唯一的资源
# 如何设计成一个资源?
- 尽量不用 url 参数
- 用 method 表示操作类型
# 不使用url参数
- 传统API设计: /api/list?pageIndex =2
- Restful API 设计: /api/list
# 用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
- 常见的Response Headers
# Request Headers
- Accept 浏览器可接受的数据格式
- Accept-Encoding 浏览器可接收的压缩算法,如gzip
- Accept-Language 浏览器可接收的语言,如zh-CN
- Connection: keep-alive 一次TCP连接重复使用
- Cookie(浏览器会自动携带同域的cookie)
- Host
- User-Agent(简称UA)浏览器信息
- Content-Type 发送数据的格式,如application/json
# Response Headers
- Content-Type 返回数据的格式,如application/json
- Content-length 返回数据的大小,多少字节
- Content-Encoding 返回数据的压缩算法,如gzip
- Set-Cookie
# 自定义header
axios-js.com/docs/#Request-Config
// `headers` are custom headers tobe sent
headers: {'X-Requested-with': 'XMLHttpRequest'},
# 缓存相关的headers
- Cache-Control Expires
- Last-Modified If-Modified-Since
- Etag If-None-Match
# http 缓存
- 关于缓存的介绍
- http 缓存策略(强制缓存+协商缓存)
- 刷新操作方式,对缓存的影响
# 关于缓存
什么是缓存?
为什么需要缓存?
- 让页面加载更快些
哪些资源可以被缓存
- 静态资源 (js css img)
# 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 中,有两种
- Last-modified 资源的最后修改时间
- Etag 资源的唯一标识(一个字符串,类似人类的指纹)
# Last-Modified
# Etag
# Headers 示例
# 请求示例
# Last-Modified 和 Etag 共存
- 会优先使用Etag
- Last-Modified 只能精确到秒级
- 如果资源被重复生成,而内容不变,则Etag 更精确
# 缓存流程
# 刷新页面对缓存的影响
# 三种刷新操作
- 正常操作:地址栏输入 url ,跳转链接,前进后退等
- 手动刷新:F5,点击刷新按钮,点击菜单刷新 command + R
- 强制刷新:ctrl + F5 / command + shift + R
# 不同刷新操作,不同的缓存策略
- 正常操作:强制缓存有效,协商缓存有效
- 手动刷新:强制缓存失效,协商缓存有效
- 强制刷新:强制缓存失效,协商缓存失效
← babel 手写instanceof →