SlideShare a Scribd company logo
1 of 33
Download to read offline
使用BigPipe提升浏览速度




            新浪微博 - 技术部 - 吴侃
                            @v4ria
           wukan@staff.sina.com.cn
• http://www.anti-powerpoint-party.com/


题外话                                       2
Estimation




               • 25 mins


Weibo.com: @v4ria
Email : wukan@staff.sina.com.cn
        gaoweiwukan@gmail.com
                                  3
• 这家伙是干嘛的?




 新版微博前端架构,代码贡献
 微博前端新技术框架布道

                 4
• 为什么使用BigPipe
• BigPipe介绍
• BigPipe实践
• 使用效果



概要               5
为什么使用BigPipe

解决速度瓶颈

降低用户感受到的延迟时间。
TTI(Time-to-Interact)



                        6
• 传统网页处理模型

     浏览器            服务器


           发送请求




           返回HTML




                          7
• BigPipe网页处理模型

      浏览器            服务器
            发送请求


            返回HTML

            数据1

            数据2

            ……


                           8
CPU的流水线技术 (Pipeline)




基本概念 – 流水线技术           9
• 低标量CPU的处理过程




基础概念 – 低标量CPU的处理过程   10
• 基本的流水线结构




基础概念 - CPU 的指令流水线技术   11
Chunk
   HTTP1.1 Transfer-Encoding: chunked




基础概念 - Chunk                            12
Flush() 让页面分块,逐步呈现




基础概念 - Chunk 和 Flush   13
定义BigPipe(百度百科)

• BigPipe是一个重新设计的劢态网页服务体系。
• 将页面分解成一个个Pagelet,然后通过Web
  服务器和浏览器之间建立管道,进行分段输出
  (减少请求数)。
• BigPipe丌需要改变现有的网络浏览器或服务
  器。



BigPipe介绍                    14
BigPipe使服务器端和浏览器端
        并发处理




                    15
BigPipe带来什么

• 后端程序无需等到页面所有 Pagelet 的API
  都读取执行完,才输出到浏览器,服务器
  端不浏览器端并行处理,加快了页面显示。
• Pagelet的输出顺序可以由后端程序控制,
  及早输出用户关心的模块。



BigPipe介绍                     16
BigPipe带来什么
     服务器                 浏览器
                 网络
  Pagelet1、2、3        Pagelet1、2、3




                                     17
BigPipe给微博带来什么
            First Impression [ms]   On Client [ms]
 BigPipe 1965                       1783
 No BP 2759                         922
                   -29%                +93%
 BigPipe 1214                       1372
 No Bp 1403                         943
                   -13%                +45%
BigPipe简介                                            18
BigPipe实践

• BigPipe页面输出信息

• BigPipe的三种模式




                  19
<body>




                     <script>




BigPipe实践                       20
切分页面

 PLC




       21
输出信息
<body>
         <link rel="base.css" type="text/css" charset="utf-8" />                  基础css和
         <script type="text/javascript" charset="utf-8" src="base.js"></script>   JavaScript

          <div id='frame'><!--框架开始-->
                   <div id="top">...</div><!--顶部导航-->
                   <div id="menu">...</div><!--左侧-->
 Chunk1            <div id="content"><!--此处为下面的PageLet占位-->
                            <div id="pagelet_1"></div>
                            <div id="pagelet_2"></div>
                                                                                  框架DIV
                   </div>
                   <div id="right">...</div>
                   <div id="bottom">...</div><!--底部-->
          </div><!--框架结束-->
</body>
<script type="text/javascript" charset="utf-8">
pl.v(html_ pagelet_1, "pagelet_1",[pagelet_1.css'], ["pagelet_1.js "]);           PageLet信
</script>                                                                         息
……. //以下省略PageLet2、3等等
 Chunk2、3、4
BigPipe实践                                                                                      22
PageLet1信息
                              Php生成拼合好的页
                              面html代码




•   Html:html_ pagelet_1,        页面框架中的空
                                 DIV之ID
•   Box:"pagelet_1",
•   Css:[‘module/pagelet_1.css'], CSS文件路径
•   Js: [“pl/pagelet_1.js "]);
                                    JS路径




BigPipe实践                                   23
BigPipe实践   24
BigPipe体系的三种模式

• 支持BigPipe
• 丌支持BigPipe
• 劢态刷新PageLet




BigPipe实践        25
BigPipe实践   26
• 普通方式




BigPipe实践结果   27
• BigPipe方式




              28
• 对真实地址栏跳转的模拟(history管理器)
• Iframe + hash + HTML5 state系列

  需要拦截用户在页面中页面跳转操作,转
  换成AjaxPageLet方式(BigPipe管理器)(
  /home?ajaxpagelet=1)


  需要接收管道页面发送的命令,加载css资
  源后显示模块,加载js资源后(PageLet管理
  器)
遇到的问题                             29
• BigPipe丌具备普适性
• 适用于:
1. 第一个请求时间较长
2. 页面上的劢态内容可以划分在多个区块内
   显示,且各个区块之间的关系丌大




问题 - 使用的范围              30
未来

• 超标量

• HTML5 Web Socket




                     31
•   BigPipe的起因、原理
•   BigPipe技术的定义
•   BigPipe的实践过程
•   BigPipe的实践结果
•   BigPipe实践中遇到的问题以及适用范围
•   将来的发展




总结回顾                        32
33

More Related Content

What's hot (10)

编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editor
 
游戏专题重构实践
游戏专题重构实践游戏专题重构实践
游戏专题重构实践
 
Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
 
不一樣的 Web Server coServ Part II
不一樣的 Web Server coServ Part II不一樣的 Web Server coServ Part II
不一樣的 Web Server coServ Part II
 
[2008]网站重构 -who am i
[2008]网站重构 -who am i[2008]网站重构 -who am i
[2008]网站重构 -who am i
 

Viewers also liked (6)

淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
 
Dpl in action
Dpl in actionDpl in action
Dpl in action
 
前端Mvc探讨及实践
前端Mvc探讨及实践前端Mvc探讨及实践
前端Mvc探讨及实践
 
杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享
 
Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)
 

Similar to 使用Big pipe提升浏览速度v2

Big pipe backend2
Big pipe backend2Big pipe backend2
Big pipe backend2
锐 张
 
Qq.com前端架构实践与思考
Qq.com前端架构实践与思考Qq.com前端架构实践与思考
Qq.com前端架构实践与思考
greengnn
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
leneli
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
longhao
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
jay li
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
丁 宇
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
pan weizeng
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
丁 宇
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试
tbmallf2e
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
xwcoder
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
 
改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
Rack Lin
 
20120516 axure rp prototype design outline
20120516 axure rp prototype design outline20120516 axure rp prototype design outline
20120516 axure rp prototype design outline
turtleknight
 

Similar to 使用Big pipe提升浏览速度v2 (20)

Big pipe backend2
Big pipe backend2Big pipe backend2
Big pipe backend2
 
Qq.com前端架构实践与思考
Qq.com前端架构实践与思考Qq.com前端架构实践与思考
Qq.com前端架构实践与思考
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
 
Axure RP Prototyping Tool
Axure RP Prototyping ToolAxure RP Prototyping Tool
Axure RP Prototyping Tool
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试
 
浏览器渲染与web前端开发
浏览器渲染与web前端开发浏览器渲染与web前端开发
浏览器渲染与web前端开发
 
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xIntroduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
 
改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
 
20120516 axure rp prototype design outline
20120516 axure rp prototype design outline20120516 axure rp prototype design outline
20120516 axure rp prototype design outline
 

使用Big pipe提升浏览速度v2