为了实现这一点,我们来看看BigPipe在页面生成过程中是如何工作: 请求解析:web服务器解析和完整性检查的http请求; 数据获取:web服务器从存储层获取数据; 标记生成:web...服务器生成响应的html标记; 网络传输:响应从web服务器传送到浏览器; CSS下载; 浏览器构造DOM树结构并应用CSS样式; js下载; 浏览器执行js; 需要注意的是:BigPipe...并且,在BigPipe中,多个Pagelets的CSS可在同一时间下载,他们可以根据各自CSS的下载完成情况来确认显示顺序。而js的下载要等到所有的pagelets都下载之后才下载。...来看一段facebook使用BigPipe的代码: big_pipe.onPageletArrive({ "id":"pagelet_welcome_box",
所谓BigPipe,指的是Facebook开发的用来改善客户端响应速度的技术。...本质上讲,其实它并不是新事物,原理上等同于Yahoo在Best Practices for Speeding Up Your Web Site里提出的Flush the Buffer Early,不过BigPipe...此外还应注意一下BigPipe和Ajax二者的区别,对于一个分成若干个块的页面而言,如果使用Ajax的话,每一块都需要单独发送一个HTTP请求,而如果使用BigPipe的话,不管有多少块,都仅有一个HTTP...所以Ajax对服务器造成的压力会是BigPipe的若干倍。...注:BigPipe不利于SEO,应用时可通过User Agent判断请求是人还是搜索引擎,如果是人的话,则应用BigPipe渲染模式,如果是搜索引擎的话,则应用传统渲染模式。
当我们都应用了这些技术,发现网站性能依然不那么乐观的时候,会考虑到一些非常规、适用于某些特定场景的优化技术 另一种思路 Facebook的研究科学家changhao jiang提出了一个优化方案,名字叫做bigpipe...浏览器解析接收到的数据,构造DOM树,下载CSS和JavaScript 浏览器下载了CSS之后,开始解析CSS,渲染页面 下载JavaScript之后,开始解析JavaScript,执行JavaScript Bigpipe...styling:浏览器生成DOM 树,并且使用CSS JavaScript downloading: 浏览器下载页面引用的JS 文件 JavaScript execution: 浏览器执行页面JS代码 看着bigpipe...""); response.end(); }, delay); }).listen(2000); 一个框架 https://github.com/bigpipe.../bigpipe BigPipe is a radical new web framework for Node.JS.
什么是BigPipe 关于BigPipe是在看一篇淘宝ued的官方博客上看到的,原文是说用nodejs做前后端分离的,只是稍微提了一下bigpipe。...下面说下在python django框架下,实现一个BigPipe的例子,也方便大家理解BigPipe的思想。...对象就是我们一开始在骨架HTML中引入的bigpipe..../2011/06/26/88 javascript的bigpipe: https://github.com/msroot/bigpipe 一个django关于bigpipe的扩展,但是4年前就没更新了...实现: https://bigpipe.io/ https://github.com/bigpipe/bigpipe.js
以前用PHP实现过,详情点击这里查看《Nginx中的PHP的缓冲问题》 无论用java、.net还是python都是可以实现bigpipe的… 拿那篇文章中的php显示页做示例: ?...html>', '', '', '', 'Node.js Bigpipe...相比php,node.js内部实现并没有“缓冲池”的功能,都是直接输出,很简单吧… 本文参考: node.js搭建bigpipe demo时碰到的雷 BigPipe Done in Node.js bigpipe-node...BigPipe: Pipelining web pages for high performance
BigPipe 是 Facebook 开发的优化网页加载速度的技术。网上几乎没有用 node.js 实现的文章,实际上,不止于 node.js,BigPipe 用其他语言的实现在网上都很少见。...先建一个 nodejs-bigpipe 的文件夹,写一个 package.json 文件如下: { "name": "bigpipe-experiment" , "version": "0.1.0...这个问题最终将我们引导到 BigPipe 上来,BigPipe 就是能让网页各部分的显示顺序与数据的传输顺序解耦的技术。...的原理和用 node.js 实现 BigPipe 的基本方法。...BigPipe。
页面渲染,通常来说分为前端渲染以及后端渲染。前端渲染指的是服务端返回html框架以及模版,前端通过ajax异步请求拉取数据渲染模版,并动态修改dom,形成最终页...
网站速度是Facebook的重要目标,2009年,Facebook成功的使网站快了两倍,工程师团队为此做了多项创新,BigPipe就是其中的一个秘密武器 BigPipe重新设计了动态网页服务体系,大体思路是...这个方式效率比较低,从图中可以看到,整个过程是顺序的,当Web服务器正忙生成一个页面,浏览器处于闲置状态,当Web服务器生成完页面,将其发送到浏览器,浏览器则成为性能瓶颈,服务器则帮不上忙 BigPipe...如何工作 BigPipe首先分解网页成多个pagelet,每个Pagelet都经过以下几个阶段: (1)server解析和检查request (2)server从存储层获取数据 (3)server生成HTML...响应 (4)网络传输 (5)CSS下载 (6)构建DOM树和应用CSS样式 (7)JavaScript下载 (8)JavaScript执行 感觉和传统模式下的页面请求过程一样啊,但BigPipe能让多个...JavaScript 性能测试结果 下图是传统模式与BigPipe的性能比较图,对Facebook主页的延迟时间进行了对比,收集数据方式是在禁用浏览器缓存的情况下加载页面50次,该图显示BigPipe使用户在大多数浏览器中感受到的延迟减少了一半
BigPipe 1. 实现原理 BigPipe是一个重新设计的动态网页服务体系。 将页面分解成一个个Pagelet,然后通过Web 服务器和浏览器之间建立管道,进行分段输出 (减少请求数)。...BigPipe不需要改变现有的网络浏览器或服务器(百度百科)。 ?...而BigPipe使得整个用户感知流程变成并行,使页面首屏渲染时间更快。如下图: ?...而BigPipe对比普通直出的优化有大约200ms,提升约16.7%。虽然实践的项目规模较小,模块数量也较少,但BigPipe的优化成果也算是比较令人满意的。 ?...而BigPipe优化跟普通直出优化则没有非常明显的优劣,只快了几十毫秒。 ? 总结 纯前端的优化对其实也已经为项目带来比较好的提升。直出对于首屏的渲染也能带来不错的提升。
示例Demo就是类似于Facebook的BigPipe(点此查看Facebook网站的Ajax化、缓存和流水线PDF>>),文章参考了(利用bigpipe机制实现页面模块的异步渲染) 在我下载的PHP中...DOCTYPE html> BigPipe Demo 3 BigPipe Demo 3 BigPipe Demo 3 <style type="text/css
可参考Facebook的Bigpipe的思想。...使用CDN 参考 https://developer.yahoo.com/performance/rules.html 处理网页图片最常见的10个错误及其解决方案 BigPipe的技术实现【转】
模板和数据共同生成出来的 模板 模板语言 包含模板语言的模板文件 拥有动态数据的数据对象 模板引擎 模板引擎 · 模板编译 with的应用 · 模板安全 模板逻辑 集成文件系统 子模板 布局视图 模板性能 Bigpipe...前端加载技术,它的提出主要是为了解决重数据页面 的加载速度问题 Bigpipe是一个需要前后端配合实现的优化技术 · 页面布局框架 · 持续数据输出 · 前端渲染 Bigpipe将网页布局和数据渲染分离
2.4 对前端发挥的局限 性能优化如果只在前端做空间非常有限,于是我们经常需要后端合作才能碰撞出火花,但由于后端框架限制,我们很难使用Comet、Bigpipe等技术方案来优化性能。...MVC分 试想一下,如果前端掌握了Controller,我们可以做url design,我们可以根据场景决定在服务端同步渲染,还是根据view层数据输出json数据,我们还可以根据表现层需求很容易的做Bigpipe...有了NodeJS之后,前端可以在NodeJS中去代理这5个异步请求,还能很容易的做Bigpipe,这块的优化能让整个渲染效率提升很多。...怎么用Node大家自己决定,但是令人兴奋的是,我们终于可以使用Node轻松实现我们想要的输出方式:JSON/JSONP/RESTful/HTML/BigPipe/Comet/Socket/同步、异步,想怎么整就怎么整
2.4 对前端发挥的局限 性能优化如果只在前端做空间非常有限,于是我们经常需要后端合作才能碰撞出火花,但由于后端框架限制,我们很难使用Comet、Bigpipe等技术方案来优化性能。 ...试想一下,如果前端掌握了Controller,我们可以做url design,我们可以根据场景决定在服务端同步渲染,还是根据view层数据输出json数据,我们还可以根据表现层需求很容易的做Bigpipe...有了NodeJS之后,前端可以在NodeJS中去代理这5个异步请求,还能很容易的做Bigpipe,这块的优化能让整个渲染效率提升很多。 ...怎么用Node大家自己决定,但是令人兴奋的是,我们终于可以使用Node轻松实现我们想要的输出方式:JSON/JSONP/RESTful/HTML/BigPipe/Comet/Socket/同步、异步,想怎么整就怎么整
~0.8.0", "express": "4.2.x", "winston": "git://github.com/flatiron/winston#master", "bigpipe...": "bigpipe/pagelet", "plates": "https://github.com/flatiron/plates/tarball/master" }, "devDependencies
自有技术BigPipe用来加速页面的渲染(使用pipelining logic) Varnish Cache用作HTTP网关,由于它的高性能和效率作为他们的首选 数十亿的用户上传的招聘使用Haystack
异步加载(并发,requirejs) 4、预加载、延后加载、按需加载 三)渲染阶段 1、js放底部,css放顶部 2、减少重绘和回流 3、合理使用Viewport 等meta头部 4、减少dom节点 5、BigPipe
领取专属 10元无门槛券
手把手带您无忧上云