全栈工程师眼中的HTTP( 四 )


为什么BigPipe能够让服务器对浏览器说“我这个请求还没结束,我们保持这个连接不要断开”呢?答案是HTTP1.1的分块传输编码 。
HTTP 1.1引入分块传输编码,允许服务器为动态生成的内容维持HTTP持久链接 。如果一个HTTP消息(请求消息或应答消息)的Transfer-Encoding消息头的值为chunked,那么消息体由数量不确定的块组成——也就是说想发送多少块就发送多少块——并以最后一个大小为0的块为结束 。
实现这个架构需要深刻理解HTTP 1.1的规则,而且要有前端的知识 。在我看来,这就是一个极佳的全栈工程师改变世界的例子 。
截止写书时,Chrome、Safari和Opera已经支持HTTP/2并默认开启,它允许服务器向浏览器“推送”内容 。也就是说,返回的条目数可以比请求的条目数多,这样服务器可以在一开始就推送所有它认为浏览器“应该需要”的资源,而不需要浏览器接受并解析完HTML页面才开始请求下载CSS、JavaScript等 。而且,后面的请求可以复用之前已经建立的底层连接 。

【全栈工程师眼中的HTTP】


推荐阅读