http

98 阅读3分钟

http状态码

状态码分类

  • 1xx 服务器收到请求
  • 2xx 成功
  • 3xx 重定向
  • 4xx 客户端错误
  • 5xx 服务器错误

常见状态码

  • 200 成功
  • 301 永久重定向
  • 302 临时重定向
  • 304 资源未修改过
  • 404 未找到资源
  • 403 没有权限
  • 500 服务器内部错误
  • 504 网关超时

http methods

常用methods

  • get 获取数据
  • post 新建数据
  • patch/put 更新数据
  • delete 删除数据

Restful API

  • 一种新的API设计方法
  • 传统API设计:把每个url当做一个功能
  • Restful API设计:把每个url当做一个唯一的资源

如何设计成一个资源

  • 尽量不用url参数
  • 用methods表示操作类型

http headers

request headers

浏览器发送请求时,传递给服务端的信息

  • Accept 浏览器可接收的数据类型
  • Accept-Encoding 浏览器可接收的压缩算法,如 gzip
  • Accept-Language 浏览器可接收的语言,如 zh-CN
  • Connection: keep-alive 一次 TCP 连接重复使用
  • cookie
  • Host
  • User-Agent 浏览器信息
  • Content-type 发送数据的类型

response headers

  • Content-Type 返回的数据类型,对应 Accept
  • Content-Length 数据大小
  • Content-Encoding 压缩算法,如 gzip ,对应 Accept-Encoding
  • Set-Cookie

自定义header

有些接口需要前端调用时,加一些自定义的header

http缓存

什么是缓存

缓存,即某些情况下,资源不是每次都去服务端获取,而是第一次获取后缓存下来,下次再请求时,直接读取本地的缓存,而不再去服务端请求

为什么需要缓存

核心需求,让网页更快的显示出来,提高性能

哪些资源需要缓存

对一个网页来说

  • html页面不能缓存
  • 业务数据不能缓存
  • 静态资源可以缓存

缓存策略-强制缓存,客户端缓存

Cache-Control表示该资源,被再次请求时的缓存情况。

  • max-age:31536000 单位是 s ,该资源被强制缓存 1 年
  • no-cache 不使用强制缓存,但不妨碍使用协商缓存(下文会讲)
  • no-store 禁用一起缓存,每次都从服务器获取最新的资源
  • private 私有缓存(浏览器级缓存)
  • public 共享缓存(代理级缓存)

缓存策略-协商缓存(对比缓存),服务端缓存

当强制缓存失效后,请求会被发送到服务端。此时,服务端也不一定每次都要返回资源。如果客户端资源还有效的话 第一,Last-Modified(Response Headers)和 If-Modified-Since(Request Headers)

  • Last-Modified 服务端返回资源的最后修改时间
  • If-Modified-Since 再次请求时带着最后修改时间
  • 服务器根据时间判断资源是否被修改(如未被修改则返回 304,失败则返回新资源和新的缓存规则)

第二,Etag(Response Headers)和 If-None-Match(Request Headers)

  • Etag 服务端返回的资源唯一标识(类似人的指纹,唯一,生成规则由服务器端决定,结果就是一个字符串)
  • If-None-Match 再次请求时带着这个标识
  • 服务端根据资源和这个标识是否 match (成功则返回 304,失败则返回新资源和新的缓存规则)

Last-ModifiedEtag

  • 如果两者一起使用,则优先使用ETag规则
  • Last-Modified只能精确到秒级别
  • 如果资源被重复生成,而内容不变,则Etag更精确