您的位置:首页 > 业内资讯 > 全栈工程师眼中的 HTTP

全栈工程师眼中的 HTTP

来源:developerWorks | 时间:2016-01-20 10:16:43 | 阅读:188 |  标签: developerWorks   | 分享到:


BigPipe页面的渲染流程。


服务器传输完框架性HTML结构之后,对浏览器说:“我这个请求还没结束,我们保持这个连接不要断开,不过您可以先用我给您的这部分来渲染。”


所以浏览器就开始渲染这个“不完整的HTML”,毛坯房页面很快出现在用户眼前,具体的页面模块都显示“正在加载”。


接下来管道里源源不断地传输过来很多模块,这时候最开始加载在服务器中的JS代码开始工作,它会负责把每一个模块依次渲染到页面上。


在用户的感知上,页面非常快地出现在眼前,但是所有的模块都显示正在加载中,然后主要的区域(比如重要的用户动态)优先出现,接下来是logo、边栏和各种挂件等。


为什么BigPipe能够让服务器对浏览器说“我这个请求还没结束,我们保持这个连接不要断开”呢?答案是HTTP1.1的分块传输编码。


HTTP 1.1引入分块传输编码,允许服务器为动态生成的内容维持HTTP持久链接。如果一个HTTP消息(请求消息或应答消息)的Transfer-Encoding消息头的值为chunked,那么消息体由数量不确定的块组成——也就是说想发送多少块就发送多少块——并以最后一个大小为0的块为结束。


实现这个架构需要深刻理解HTTP 1.1的规则,而且要有前端的知识。在我看来,这就是一个极佳的全栈工程师改变世界的例子。


截止写书时,Chrome、Safari和Opera已经支持HTTP/2并默认开启,它允许服务器向浏览器“推送”内容。也就是说,返回的条目数可以比请求的条目数多,这样服务器可以在一开始就推送所有它认为浏览器“应该需要”的资源,而不需要浏览器接受并解析完HTML页面才开始请求下载CSS、JavaScript等。而且,后面的请求可以复用之前已经建立的底层连接。

小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

相关视频攻略

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件admin@haote.com

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2024 haote.com 好特网