• 首页
  • 关于
    • 前端行知录 photo

      前端行知录

      前端路漫漫,行知方知行

    • Email
    • Github
  • 文章
    • 所有文章
    • 所有标签
  • 作品

BigPipe

17 May 2016

Reading time ~1 minute

BigPipe

什么是BigPipe

  • 是一种不局限于语言的前后端整合技术方案
  • 由Facebook首创
  • 适合比较大型的,需要大量服务器运算的站点
  • 有效减少HTTP请求
  • 兼容多浏览器

BigPipe解决的问题

  • 下载阻塞
  • 服务器与浏览器算力浪费

BigPipe模型

一般的网页加载是直接通过访问服务器,发送请求,收到返回数据,然后渲染

一般堵塞模型: 后端渲染页面→网络延迟→浏览器端页面渲染,所有的数据一次性渲染

BigPipe思路,分块加载,一次请求,多次返回

  1. 浏览器发送一次请求;
  2. 服务端收到请求后,开始处理请求;
  3. 服务器端按预先写好的控制流程,开始分块渲染HTML;
  4. 如果渲染完了向浏览器端发送数据;
  5. 浏览器端收到分块数据后开始渲染

BigPipe堵塞模型(类似于CPU分级流水)

pagelet 1    |    服务器端计算    网络传输      浏览器渲染
             |
pagelet 2    |             服务器端计算        网络传输      浏览器渲染
             |
pagelet 3    |                      服务器端计算        网络传输        浏览器渲染
_____________|________________________________________________________________

分级传输极大提高了首页渲染效率

其他

BigPipe不利于SEO,应用时可通过User Agent判断请求是人还是搜索引擎,如果是人的话,则应用BigPipe渲染模式,如果是搜索引擎的话,则应用传统渲染模式。

Architecture

alcat2008

Dreamer, Practitioner, Incomplete Front-ender

← JavaScript 编码规范 兼容多种模块规范 →