系列文章目录
目录
前言
http学习笔记
一、http常见状态码
- 1xx 服务器收到请求
- 2xx 请求成功,200
- 3xx 重定向, 301(永久) 302(临时) 配合location,浏览器自动处理
- 4xx 客户端错误,404
- 5xx 服务端错误,500
二、Restful API
传统API设计:把每个url当做一个功能
Restful API设计:把每个url当做一个唯一的资源
用method表示操作类型:post patch get delete
三、http headers
1、Request Headers
- Accept 浏览器可接收的数据格式
- Accept-Encoding 浏览器可接收的压缩算法,如 gzip
- Accept-Language 浏览器可接收的语言,如 zh-CN
- Connection keep-alive一次TCP连接重复使用
- cookie
- Host
- User-Agent (UA)浏览器信息
- Content-type 发送数据的格式,如 application/json
2、Response Headers
- Content-type 返回数据的格式,如 application/json
- Content-length 返回数据的大小,多少字节
- Content-Encoding 返回数据的压缩算法,如 gzip
- Set-Cookie 服务端改cookie
3、缓存相关的headers
- Cache-Control Expires
- Last-Modified If-Modified-Since
- Etag If-None-Match
四、http 缓存
1、强制缓存
Cache-Control
- Response Headers 中,服务端决定
- 控制强制缓存的逻辑
- 例如 Cache-Control:max-age=31536000(缓存时间,单位是秒)
Cache-Control 的值
- max-age 缓存的过期时间
- no-cache 不用强制缓存,请求服务端
- no-store 不用强制缓存,不用服务端的缓存措施,请求服务端
- private 允许最终用户做缓存
- public 允许中间路由代理做缓存
Expires
- 同在 Response Headers中
- 同为控制缓存过期
- 已被 Cache-Control 代替
2、协商缓存
- 服务端缓存策略
- 服务器判断客户端资源,是否和服务端资源一样
- 一致则返回304,否则返回200和最新的资源
资源标识
- 在 Response Headers 中,有两种
- Last-Modified 资源的最后修改时间
- Etag 资源的唯一标识(一个字符串)
Last-Modified 和 Etag
- 会优先使用 Etag
- Last-Modified 只能精确到秒级
- 如果资源被重复生成,而内容不变,则Etag 更精确
总结
http缓存很重要!!!