http2.0
HTTP/2,即超文本传输协议 2.0,是下一代 HTTP 协议。是互联网工程任务组的 httpbis 小组开发进行。在开放互联网上 HTTP 2.0 将只用于 https://网址,而 http:// 网址将继续使用 HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。DANE RFC6698 允许域名管理员不通过第三方 CA 自行发行证书
就是 http 的下一代规范
http2.0 和 http1.1 的不同之处
- http1.1 中,每次请求资源都需要开启一个 tcp/ip 请求,因为 tcp/ip 有并发数炼制,所以当资源一多,就会影响页面加载速度。
- http2.0,一个 tcp/ip 请求可请求多个资源,提高效率
- http2.0 采用二进制而非文本格式,将所有的信息分割为更小的消息和帧,提高请求速度,降低延迟。
- http2.0 使用报头压缩
- http2.0 可以让服务端对客户端的一个请求,响应多次,主动推送到客户端缓存中
- 请求优先级,当所有资源都并发请求的时候,可以对特定的资源进行优先传输。
https
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的 HTTP 通道。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
如果需要将网站升级为 https,需要后端去申请证书(SSL)等,同时 http 请求的时候所传输的信息更大,建议 htpp2.0+https。
SSL
Secure Sockets Layer,安全套接层,一种安全协议,为 TCP/IP 于各种应用层协议之间,为数据通讯提供安全支持。
TLS
Transport Layer Security,及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。该协议由两层组成:TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshak)
SSL/TLS 的 握手流程:
1 | 1.浏览器请求建立SSL连接,并向服务端发送一个随机数-Client random和客户端支持的加密方法,比如RSA加密,此时是明文传输。 |
SLL/TLS 握手规则示意图
写了五六遍,勉强能写出像样的示意图,请见谅
http 的缓存
前后端的 http 交互中,使用缓存能很大程度上的提升效率,而且对有性能有要求的前端项目都是必用缓存的
强缓存与弱缓存
缓存可以分为两种类型:
- 强缓存(200 from cache)
- 协商缓存 (304)
区别:
- 强缓存时,浏览器如果判断本地缓存未过期就会直接使用,无需发起 http 请求
- 协商缓存时,浏览器会向服务端发起 http 请求,然后服务端告诉浏览器「文件为改变」,让浏览器使用本地缓存
对于协商缓存,使用 ctrl + F5 强制刷新可以是协商缓存失效
但是对于强缓存,在未过期是,必须更新资源路径才能发起新的请求
缓存头部
如何区分强缓存和协商缓存
常用强缓存:
- Cache-Control/Max-age (http1.1)
- Pragma/Expires (http1.0)
常用协商缓存:
- If-None-Match/E-tag (http1.1)
- If-Modified-Since/last-Modified (http1.0)
使用「meta」标签可以控制缓存方案-Pragma
1 | <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> |
Pragma 方案,支持情况不佳,缓存代理服务器不支持