Submit Search
Upload
使用Big pipe提升浏览速度 wk_velocity
•
1 like
•
647 views
K
kumawu
Follow
What we talked about on velocity china 2011
Read less
Read more
Report
Share
Report
Share
1 of 46
Download now
Download to read offline
Recommended
使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2
kumawu
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
20111018 zhouchen share
20111018 zhouchen share
zcbug
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
kumawu
前端性能测试
前端性能测试
tbmallf2e
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
leneli
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
前端MVVM框架安全
前端MVVM框架安全
Borg Han
Recommended
使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2
kumawu
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
20111018 zhouchen share
20111018 zhouchen share
zcbug
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
kumawu
前端性能测试
前端性能测试
tbmallf2e
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
leneli
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
前端MVVM框架安全
前端MVVM框架安全
Borg Han
Make your web faster
Make your web faster
德生 谭
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
美团技术团队
编辑器设计U editor
编辑器设计U editor
taobao.com
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化
Charlee Green
Html5
Html5
cazhfe
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
编辑器设计Kissy editor
编辑器设计Kissy editor
taobao.com
深入淺出Node.JS
深入淺出Node.JS
國昭 張
2011新版首页总结 技术篇
2011新版首页总结 技术篇
传贵 谢
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
ASP.Net MVC Framework
ASP.Net MVC Framework
國昭 張
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
CSS 語法教學
CSS 語法教學
Shengyou Fan
[2008]网站重构 -who am i
[2008]网站重构 -who am i
Twinsen Liang
高性能网站最佳实践
高性能网站最佳实践
longhao
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
國昭 張
Yog Framework
Yog Framework
fansekey
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
jay li
Nginx使用和模块开发
Nginx使用和模块开发
qingpiao1983
Ndw celebration day_ppt_2010_2011
Ndw celebration day_ppt_2010_2011
hgould
Question 4
Question 4
jonnycollins127
More Related Content
What's hot
Make your web faster
Make your web faster
德生 谭
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
美团技术团队
编辑器设计U editor
编辑器设计U editor
taobao.com
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化
Charlee Green
Html5
Html5
cazhfe
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
编辑器设计Kissy editor
编辑器设计Kissy editor
taobao.com
深入淺出Node.JS
深入淺出Node.JS
國昭 張
2011新版首页总结 技术篇
2011新版首页总结 技术篇
传贵 谢
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
ASP.Net MVC Framework
ASP.Net MVC Framework
國昭 張
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
CSS 語法教學
CSS 語法教學
Shengyou Fan
[2008]网站重构 -who am i
[2008]网站重构 -who am i
Twinsen Liang
高性能网站最佳实践
高性能网站最佳实践
longhao
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
國昭 張
Yog Framework
Yog Framework
fansekey
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
jay li
Nginx使用和模块开发
Nginx使用和模块开发
qingpiao1983
What's hot
(20)
Make your web faster
Make your web faster
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
编辑器设计U editor
编辑器设计U editor
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化
Html5
Html5
Maven & mongo & sring
Maven & mongo & sring
编辑器设计Kissy editor
编辑器设计Kissy editor
深入淺出Node.JS
深入淺出Node.JS
2011新版首页总结 技术篇
2011新版首页总结 技术篇
百度前端性能监控与优化实践
百度前端性能监控与优化实践
ASP.Net MVC Framework
ASP.Net MVC Framework
第三方内容开发最佳实践
第三方内容开发最佳实践
CSS 語法教學
CSS 語法教學
[2008]网站重构 -who am i
[2008]网站重构 -who am i
高性能网站最佳实践
高性能网站最佳实践
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
Yog Framework
Yog Framework
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
Nginx使用和模块开发
Nginx使用和模块开发
Viewers also liked
Ndw celebration day_ppt_2010_2011
Ndw celebration day_ppt_2010_2011
hgould
Question 4
Question 4
jonnycollins127
New literacies ch 4 visual final
New literacies ch 4 visual final
hgould
Prsentation eng 101
Prsentation eng 101
sopno100
Religia roma
Religia roma
jvalara
Religioa egipte
Religioa egipte
jvalara
New literacies ch 4 visual version 2
New literacies ch 4 visual version 2
hgould
Horace v-la salle-summary-judgment[1]
Horace v-la salle-summary-judgment[1]
Nutriway
Viewers also liked
(8)
Ndw celebration day_ppt_2010_2011
Ndw celebration day_ppt_2010_2011
Question 4
Question 4
New literacies ch 4 visual final
New literacies ch 4 visual final
Prsentation eng 101
Prsentation eng 101
Religia roma
Religia roma
Religioa egipte
Religioa egipte
New literacies ch 4 visual version 2
New literacies ch 4 visual version 2
Horace v-la salle-summary-judgment[1]
Horace v-la salle-summary-judgment[1]
Similar to 使用Big pipe提升浏览速度 wk_velocity
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
丁 宇
新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙
新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙
slawdan
Big pipe backend2
Big pipe backend2
锐 张
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
丁 宇
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
leneli
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
Joseph Chiang
美团前端架构简介
美团前端架构简介
pan weizeng
大型互联网站性能优化
大型互联网站性能优化
丁 宇
Comment System of 56.com
Comment System of 56.com
Ho Kim
前端性能优化&测试
前端性能优化&测试
tbmallf2e
合久必分,分久必合
合久必分,分久必合
Qiangning Hong
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC
Qq.com前端架构实践与思考
Qq.com前端架构实践与思考
greengnn
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
淘宝搜索前端优化
淘宝搜索前端优化
Frank Xu
How to ASP.NET MVC4
How to ASP.NET MVC4
Daniel Chou
改善Programmer生活的sql技能
改善Programmer生活的sql技能
Rack Lin
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
Bo-Yi Wu
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
Will Huang
Similar to 使用Big pipe提升浏览速度 wk_velocity
(20)
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙
新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙
Big pipe backend2
Big pipe backend2
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
美团前端架构简介
美团前端架构简介
大型互联网站性能优化
大型互联网站性能优化
Comment System of 56.com
Comment System of 56.com
前端性能优化&测试
前端性能优化&测试
合久必分,分久必合
合久必分,分久必合
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
Qq.com前端架构实践与思考
Qq.com前端架构实践与思考
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
淘宝搜索前端优化
淘宝搜索前端优化
How to ASP.NET MVC4
How to ASP.NET MVC4
改善Programmer生活的sql技能
改善Programmer生活的sql技能
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
使用Big pipe提升浏览速度 wk_velocity
1.
使用BigPipe提升浏览速度
新浪微博 - 技术部 - 吴侃 @v4ria wukan@staff.sina.com.cn
2.
题外话 • http://www.anti-powerpoint-party.com/
2
3.
Estimation Estimation
• 30 mins Weibo.com: @v4ria Email : wukan@staff.sina.com.cn gaoweiwukan@gmail.com 3
4.
这家伙是干嘛的? 新版微博前端架构,代码贡献 微博前端新技术框架布道
4
5.
感谢在前
5
6.
概要 • 为什么使用BigPipe • BigPipe介绍 •
BigPipe实践 • 与传统Ajax对比 • 曾经遇到的问题 6
7.
为什么使用BigPipe 解决速度瓶颈 降低用户感受到的延迟时间。 TTI(Time-to-Interact)
7
8.
传统网页处理模型
浏览器 服务器 发送请求 返回HTML 8
9.
BigPipe网页处理模型
浏览器 服务器 发送请求 返回HTML 数据1 数据2 …… 9
10.
基本概念 – 流水线技术 CPU的流水线技术
(Pipeline) 10
11.
基础概念 – 低标量CPU的处理过程 •
低标量CPU的处理过程 11
12.
基础概念 - CPU
的指令流水线技术 • 基本的流水线结构 12
13.
基础概念 - Chunk
Chunk HTTP1.1 Transfer-Encoding: chunked 13
14.
基础概念 - Chunk
和 Flush Flush() 让页面分块,逐步呈现 14
15.
BigPipe介绍 定义BigPipe(百度百科) • BigPipe是一个重新设计的劢态网页服务体系。 • 将页面分解成一个个Pagelet,然后通过Web
服务器和浏览器之间建立管道,进行分段输出 (减少请求数)。 • BigPipe丌需要改变现有的网络浏览器或服务 器。 15
16.
BigPipe使服务器端和浏览器端
并发处理 16
17.
BigPipe介绍 BigPipe带来什么 • 后端程序无需等到页面所有 Pagelet
的API 都读取执行完,才输出到浏览器,服务器 端不浏览器端并行处理,加快了页面显示。 • Pagelet的输出顺序可以由后端程序控制, 及早输出用户关心的模块。 17
18.
BigPipe带来什么
服务器 浏览器 网络 Pagelet1、2、3 Pagelet1、2、3 18
19.
BigPipe给微博带来什么
First Impression [ms] On Client [ms] BigPipe in 1965 1783 1Mbps Original 2759 922 -29% +93% BigPipe in 1214 1372 10Mbps Original 1403 943 -13% +45% 19
20.
BigPipe实践 • BigPipe页面输出信息 • BigPipe的三种模式 •
不传统Ajax方式比较 20
21.
BigPipe实践
<body> <script> 21
22.
切分页面 PLC
22
23.
输出信息 <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><!--左侧--> <div id="content"><!--此处为下面的PageLet占位--> Chunk1 <div id="pagelet_1"></div> 框架DIV <div id="pagelet_2"></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 23
24.
BigPipe实践 PageLet1信息
Php生成拼合好的页 面html代码 • Html:html_ pagelet_1, 页面框架中的空 DIV之ID • Box:"pagelet_1", • Css:[‘module/pagelet_1.css'], CSS文件路径 • Js: [“pl/pagelet_1.js "]); JS路径 24
25.
BigPipe实践
25
26.
BigPipe实践 BigPipe体系的三种模式 • 支持BigPipe • 丌支持BigPipe •
劢态刷新PageLet 26
27.
BigPipe实践
27
28.
不传统Ajax比较 • 减少HTTP请求数:多个模块更新合成一个请求 • 减少开发成本:前端无需多写JavaScript代码 •
降低管理成本:模块更新由后端程序控制 • URL优雅降级:页面链接使用真实地址 • 代码一致性:页面加载不劢态刷新模块代码相同 28
29.
不传统Ajax比较 •
请求数减少:多个chunk合成一个请求 29
30.
不传统Ajax比较 异步加载显示模块的方式: Old Way $.Ajax(url1,function(){
url1 $('#pagelet1').html(html1); }); url2 $.Ajax(url2,function(){ $('#pagelet2').html(html2); • 前端编写代码、 }); • 三个HTTP请求, • 返回内容为html代码 30
31.
不传统Ajax比较 异步加载显示模块的方式: BigPipe方式
降低模块开发成本、管理成本 <script> pl.View('pagelet1','pl1.css','pl1.js', '<span>Here is pagelet1</span>'); </script> pl2 pl1 <script> pl.View('pagelet2','pl1.css','pl1.js', • 仅有一个HTTP请求 '<span>I am pagelet2</span>'); • 前端无需写代码 </script> • 模块输出由后端程序控制 • 返回内容为JavaScript代码,自 劢调用显示Pagelet功能 31
32.
不传统Ajax比较 链接为真实URL Ajax方式 BigPipe方式
32
33.
不传统Ajax比较 • 拦截页面请求,转换成ajax pipe
• 拦截页面请求 url • 转换成Ajax请求,/home?ajaxpagelet=1 ajax • 渲染后端输出的模块 show 33
34.
不传统Ajax比较 • 优雅向下兼容 • 任意链接随意切换BigPipe模式或传统模式
34
35.
不Ajax比较 一致性
:加载页面与劢态更新某个模块的后端输出代码相同 加载页面 劢态刷新模块 <html> <body><div></div></body> </html> <script> <script> pl.View('pagelet1','pl1.css','pl1. pl.View('pagelet1','pl1.css','pl1. js', js', '<span>Here is '<span>Here is pagelet1</span>'); pagelet1</span>'); </script> </script> 35
36.
BigPipe实践结果 • 普通方式
36
37.
BigPipe方式
37
38.
问题及优化 •
css 在IE下的限制 • 文件请求数变多 • Css下载阻塞重要模块 • 需要使浏览器产生历史记录 • chunk大小限制 • 减少图片请求 • 静态资源域名增加 38
39.
模块带来的问题 css 在IE下的限制 •
文档中只有前31个link或style标记关联的CSS能够应用。 • 一个style标记或css文件只有前31次@import指令有 效应用。 • IE中每个style标签或css文件的选择符个数丌能超过 4095 • @import指令下层叠限制丌能超过4层 39
40.
模块带来的问题
文件请求数变多 • 理想情况下,每个Pagelet会包含1个JavaScript文件、1个CSS 文件 • 新浪微博首页会包含26个PageLet,就会增加 52 个HTTP请求。 40
41.
模块带来的问题 •
css阻塞重要模块 Pagelet加载流程 • JavaScript异步加载css文件 CSS • 当css文件下载完成 HTML • 将html放入页面空DIV • 启劢JavaScript,绑定事件等 JavaScript 41
42.
模块带来的问题 •
css阻塞重要模块 42
43.
遇到的问题 • 对真实地址栏跳转的模拟 –
Iframe + hash + HTML5 state • chunk大小限制 – Firefox 1k以上才可以开始渲染 • 减少图片请求:采用 base64对图片进行编码 • 静态资源域名增加 43
44.
使用的范围 • BigPipe适用于:
第一个请求时间较长,后端程序需要读取多个 API 页面上的劢态内容可以划分在多个区块内显示, 且各个区块之间的关系丌大 44
45.
未来 • 超标量CPU • HTML5
Web Socket 45
Download now