biubiubiu...

http methods

传统API设计:把每个url当作一个功能

  • get\post\put(patch)\delete

restful API:把每个url当作一个唯一的资源

  • 如何设计成一个资源?
    1. 尽量不适用url参数
    • 传统: /api/list?pageIndex=2
    • restful: /api/list/2
    1. 用method表示操作类型
    • 传统:
    • restful:

http headers

Request Headers 客户端向服务端发的headers

  • Accept:浏览器可接收的数据格式
  • Accept-Encoding: 浏览器可接收的压缩算法,如gzip
  • Accept-Languange:浏览器可接收的语言,如zh-CN(中文)
  • Connection:keep-alive : 一次TCP连接重复使用
  • cookie: 同域请求浏览器自动发送cookie
  • HOst: 请求的域名
  • User-Agent(UA):浏览器信息
  • Content-type:发送数据的格式,如 application/json
  • if-Modified-Since对应Last-Modified 资源最后修改时间,精确到秒
  • If-None-Match对应Etag: 资源唯一表示,类似人类指纹,优先级高于if-modified-since,资源重复生成,但内容不变时用etag更合理

Response Headers 服务端向客户端返回的headers

  • Content-type:返回 数据的格式,如 application/json
  • content-length: 返回数据的大小,多少字节
  • content-Encoding: 返回数据的压缩算法,如gzip
  • Set-cookie: 服务端修改cookie(浏览器本地被修改)

以下 response headers 与缓存有关:

  • Expires 同为控制缓存过期的REsponse Header,已经被Cache-Control取代;现在浏览器依然兼容,但优先级低于cc
  • Last-Modified: if-Modified-Since 资源最后修改时间
  • Etag: If-None-Match 资源唯一表示,类似人类指纹
  • Cache-Control: Expires 如 max-age=31536000 (秒,一年) 服务端把认为可以缓存在浏览器本地的资源给加上这个header,控制强制缓存的逻辑
    • max-age:最大缓存时间
    • no-cache: 不做本地缓存
    • no-store: 不做本地缓存,也不做服务端缓存,很少见
    • private: 只允许最终用户作为缓存
    • public: 最终用户、中间路由都可缓存

自定义header

  • 可用于特殊验证

http缓存

缓存:把没必要重新获取一遍的资源放到本地

为什么需要缓存?

  • 网络请求过慢,应减少网络传输内容数量、体积
  • 网络请求不稳定,随时可能没信号
  • 提高加载效率
  • 静态资源(js、css、img,通过webpack打包后contenthash值是否变化来判断是否更新)可以缓存,有可能被修改的,如数据,不应缓存

缓存策略

强制缓存

协商缓存(对比缓存)

是一个服务端缓存策略

  • 服务端判断客户端资源是否和服务端一致
  • 一致则返回304,否则返回200和资源

刷新操作方式,对缓存的影响

  • 正常操作:强制缓存有效,协商缓存有效; 浏览器地址栏输入url、跳转连接、前进后退等;
  • 手动刷新:强制缓存失效,协商缓存有效; F5,点击刷新按钮,右击菜单刷新;
  • 强制刷新:强制缓存失效,协商缓存失效; Ctrl+F5;
posted @ 2021-03-01 01:04  了恩  阅读(132)  评论(0编辑  收藏  举报