http缓存
- exprise
表示过期时间,将系统时间和exprise比较,没有超时则使用缓存数据 - cache-control
有效时间,超过间隔时间则重新请求 - ETag/If-None-Match
一串hash码,代表的是一个资源的标识符,hash值变化则重新请求 - Last-Modified/If-Modified-Since
文件的最后修改时间,超时重新请求
cache-control属性
- public 服务器,代理服务器都可以对返回内容进行缓存
- private 只有发起请求的浏览器可以缓存
- no-store 本地和代理服务器都不缓存,每次都重新请求
- no-cache 可以本地缓存,每次发起请求向服务器验证,才允许使用缓存
- max-age 设定多少秒过期,过期之后才会再次请求
cookie属性
- domain:在哪个域有效
- path:cookie有效的路径
- httpOnly:为true时禁止js读取和修改cookie,可以防止xss
- SameSite:限制使用第三方cookie
- strict 仅允许一方请求携带 Cookie,即浏览器将只发送相同站点请求的 Cookie,即当前网页 URL 与请求目标 URL 完全一致。
- Lax(chrome80之后默认值) 允许部分第三方请求携带 Cookie
- None 无论是否跨站都会发送 Cookie
常见状态码
- 301:永久重定向
- 302:临时重定向,直接使用GET方法访问URI
- 307:临时重定向,不允许将请求方法从post改为get
- 304:从缓存中读取(协商缓存)
- 400:请求报文错误
- 401:token超时
- 403:无权限,禁止访问
- 502:网关错误
- 503:服务器维护或过载
http 1.1/2.0/3.0
http 1.1 keep-alive
http 1.1默认开启keep-alive,http连接关闭,tcp连接不会立刻关闭,也就是一个tcp连接可以多次请求一个接口,且同一时刻只有一个http请求
http 2.0
- 二进制分帧
- 多路复用 将http消息分为独立帧,交错发送然后重新组装,在同一个tcp连接中同时发送多个请求和响应
- 头部压缩 首先在http2.0中使用首部表键值对,不再每次请求和响应发送,首部表在http2.0中始终存在,客户端和服务端共同维护更新,只发送差异数据。
- 服务器推送
管线化(http1.1): 管线化可以在同一个tcp连接上发送多个请求,不必等待返回,但是必须按照发送顺序返回,因此会有对头阻塞。
多路复用(http2.0):在同一个tcp连接上乱序发送多个请求,乱序返回,多路复用是基于帧,流的传输,所以可以乱序,在http2.0之前是基于文本的,所以不能乱序,解决了对头阻塞的问题。
http 3.0
基于udp:减少了握手的成本。
多路复用:http2.0解决了http连接的队头阻塞问题,但是tcp连接同样会有队头阻塞,http3.0基于udp解决了这个问题。
目前使用较少,在手机app中有使用,web端几乎没有。
DNS解析过程(待补充)
- 浏览器缓存
- 本地host缓存
- 路由器
- 顶级域名服务器->根服务器
递归查询和迭代查询
参考链接
图解 HTTP 缓存
巩固你的HTTP知识体系
6张图从HTTP/0.9进化到HTTP3.0
多张图带你彻底搞懂DNS域名解析过程