HTTP 123
HTTP1.0 根据谷歌的调查, 现在请求一个网页,平均涉及到 80 个资源,30 多个域名。考虑最原始的情况,每请求一个资源都需要建立一次 TCP 请求,显然不可接受。HTTP 协议规定了一个字段 Connection,不过默认的值是 close,也就是不开启。
HTTP1.1 Pipeline 是为了减少不必要的 TCP 连接,但依然存在队头阻塞(HOC)的缺点,一种解决思路是利用并发连接减少某一个 HOC 的影响,另一个是共享(注意与复用的区别) TCP 连接,直接避免 HOC 问题的发生。
HTTP1.1 的缺陷
高延迟 — 队头阻塞(Head-Of-Line Blocking)
当有多个串行请求执行时,如果第一个请求不执行完,后续的请求也无法执行。
支持并发请求是解决解决 HOC 问题的一种方案,并发请求并非是直接解决了 HOC 的问题,而是尽可能减少 HOC 造成的影响。
将同一页面的资源分散到不同域名下,提升连接上限。
减少请求数量
内联一些资源:css、base64 图片等
合并小文件减少资源数
无状态特性 — 阻碍交互
明文传输 — 不安全性
HTTP 1.x 也可以配合 TLS 进行安全传输,只是不是强制的。
不支持服务端推送
SPDY SPDY 是由 Google 推行的改进版本的 HTTP1.1。
针对 HTTP1.1 的缺陷,SPDY 提供了如下特性:
多路复用 — 解决队头阻塞
SPDY 允许在一个连接上无限制并发流。因为请求在一个通道上,TCP 效率更高。