bigpipe基于HTTP/1.1 支持的chunked编码,可以由浏览器接收到服务器发送的chunked块后,立即解析该块代码。因为chunked编码使消息主体成块发送,每块有自己的大小指示器,在所有的块之后会紧接着一个可选的包含实体头域的尾部。这种编码充许发送端能动态生成内容,并能携带能让接收端判断消息是否接收完整的有用信息。
每块的大小指示器chunk-size为16进制数字字符串,块编码以大小为0的块结束,紧接着是trailer(尾部),trailer以一个空行终止。
如下图:
图中蓝框区域所示该http响应为chunked编码
图种红框部分为每一个chunked块,其中比如第一个块的14a就是这个块的大小指示器chunk-size,紧接着的就是块的内容。在最后一个内容块后面会增加一个大小为0的块,以标志所有块结束,所以真实的块数量会比可见的内容块数量多一个。
点击以下地址可以查看该实例,可以明显地看到每一行的延迟输出。
<chunked块输出实例>(写完博文后发现我那破空间没支持chunked编码,大家拿源码自己在本地运行吧╮(╯▽╰)╭)
大家可以看到,在PHP中,是通过flush()语句来将缓冲区里的数据实时发送到请求端,实现起来并不复杂。
ok,那么我们如何来通过chunked编码块的这个特性来实现页面元素的异步渲染呢?是由服务器端输出分块的内容,其实就是一段<script>标签内容,<script>标签添加到页面后,会由标签内的js代码来作页面模块渲染的控制,请看以下示例:
<chunked块模块渲染>
分享到:
相关推荐
BigPipe技术java源代码,实现页面的单线程加载,和多线程加载,减少页面的加载时间
本文给大家分享的是使用nodejs结合bigpipe实现异步加载页面的方案,非常的实用,也是以后前端性能优化的一个方向,希望大家能够喜欢。
NULL 博文链接:https://liaoke0123.iteye.com/blog/2312795
bigpipe 基于struts2标签实现
本文基于BigPipe的思想,开发了BigPipe的JSP实现,该技术可以实现JSP页面的快速加载,增强用户体验,读者不仅可以从本文了解BigPipe原理,还可以使用开发的Struts2标签进行实际的开发,相信对读者的学习和开发有很大...
测试我自己编写的koa-bigpipe-middlewary, 模拟bigpipe渲染技术 环境 node >= 8.x 执行 npm install node app.js 打开localhost:9000
以至于这技术出现很久以后,我还以为就是整个网页的框架先发送完毕后,用另一个或几个 ajax 请求再请求页面内的模块。直到不久前,我才了解到原来 BigPipe 的核心概念就是只用一个 HTTP 请求,只是页面元素不按顺序...
NULL 博文链接:https://secondhrc.iteye.com/blog/1837984
Bigpipe命令_V45_comref2
已调试成功,并做了优化,类似新浪微博BIGPIPE
【目录】 概念 实现 实战问题 展望
用C#实现的仿新浪微博首页数据的加载方式。测试了下谷歌和IE8都支持,同样的数据处理量:BigPipe加载方式耗时1.22秒,传统方式加载3.01秒。
用asp.net mvc2.0 实现bigbipe技术,这只有C#部份代码,javascript部分还未实现,以后再补吧。
NET BIGPIPE 实现,前后台代码。
NULL 博文链接:https://mozhenghua.iteye.com/blog/1218888
页面分块Pagelet###pagelet将页面的dom,以及dom依赖的css、js分块收集,使用controller控制按需输出,实现了类bigpipe的分块输出,前端BigPipe模块可以实现异步渲染,优化渲染速度和性能。###2.延迟渲染BigRender##...
用asp.net mvc2.0 实现bigbipe技术,该版修改了异步线程flush html错乱的bug与加入了bigpipe js框架。非常感谢http://my.csdn.net/SeaSunk提供的js框架。
bigpipe对应的tmsh命令及linux对应的tmsh命令,TMSH命令行操作bigpipe对应的tmsh命令及linux对应的tmsh命令