SlideShare uma empresa Scribd logo
1 de 48
以下人群 请勿 阅读此系列 PPT ,[object Object],[object Object],[object Object],[object Object]
Section II Dynamic JS Loader Ctrip  前端开发  feifeipan Email : feifeipan59@gmail.com Section I  请参看   高性能网站建设
思考…… ,[object Object]
发现…… ,[object Object],[object Object],[object Object]
思考…… ,[object Object]
曾经(或现在)
总是认为… 随便 找个地儿放一下 JS , 只要页面 不报错 就行啦!
结果总是…… ,[object Object]
结果总是…… 为啥总是空白呢? 空白还是空白 !!
因为…… ,[object Object],[object Object]
解决方案 ,[object Object],[object Object],[object Object]
思考…… ,[object Object],[object Object],[object Object]
无阻塞脚本 ,[object Object]
无阻塞的脚本之  延迟脚本 ,[object Object],[object Object],[object Object]
无阻塞的脚本之  延迟脚本 ,[object Object],注 : firefox3.6 不支持 defer 属性 只有 IE6.0+ 和 Firefox3.5 支持,其余浏览器均不支持
[object Object],无阻塞的脚本之 动态脚本元素 在页面中 创建脚本节点 ,并添加到 DOM 中
[object Object],无阻塞的脚本之 动态脚本元素 可以 实时监听 到加载结束,添加 回调函数
[object Object],无阻塞的脚本之 动态脚本元素 ,[object Object],[object Object]
[object Object],无阻塞的脚本之 XMLHttpRequest
[object Object],无阻塞的脚本之 XMLHttpRequest 兼容所有浏览器 下载 JS 代码但是不立刻执行 不能跨域!
似乎…… ,[object Object],[object Object]
可是…… 现实往往比预期 要 复杂 、 更有 挑战性
再思考…… ,[object Object],[object Object]
Ctrip 的实际情况 有两台服务器,速度和稳定性能如下 域名 c-ctrip.com ctrip.com (备用) 速度 {speed} 稳定性 {stability}
Ctrip 的前端初步策略 加载 c-ctrip 站点的文件 fileN.js 1000ms 后检测是否加载到 继续加载后续 fileN.js 加载备用 ctrip 站点的文件 fileN_bak.js 是否页面 JS 全部加载完毕 否 是 否
Ctrip 实现方案 ,[object Object],[object Object],[object Object]
Ctrip 实现方案 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ctrip 实现方案 方案二 先用”动态脚本加载”从 c-ctrip 加载 file.js 。 如果超时没有加载到, 则删除这个 DOM,  从备用服务器 ctrip 上获取 file_bak.js 。
Ctrip 实现方案 方案二  { 测试结果 } ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ctrip 实现方案 方案三 优化方案二中的 Firefox 。在 JS 文件头部先判断是否已经被加载 ; 如果加载过,则抛出一个错误,不再执行。
Ctrip 实现方案 方案三  { 测试结果 } ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],Ctrip 实现方案
Ctrip 实现方案 方案四  { 测试结果 } ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],Ctrip 实现方案
[object Object],[object Object],Ctrip 实现方案
[object Object],[object Object],Ctrip 实现方案
[object Object],[object Object],Ctrip 实现方案
[object Object]
[object Object],[object Object]
发送请求截图 ,[object Object],[object Object],第一次加载 第二次加载
第一屏显示对比
页面加载对比 ,[object Object],After
Before
After
结论 ,[object Object],[object Object],[object Object]
参考资料 ,[object Object],[object Object],[object Object],[object Object],[object Object]
感谢…… ,[object Object],[object Object],[object Object],[object Object]
 

Mais conteúdo relacionado

Mais procurados

SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 twMVC
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Eric Xiao
 
twMVC#21 | 你所不知道的 Visual Studio
twMVC#21 | 你所不知道的 Visual StudiotwMVC#21 | 你所不知道的 Visual Studio
twMVC#21 | 你所不知道的 Visual StudiotwMVC
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web FrameworkFred Chien
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18twMVC
 
twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結twMVC
 
W3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in ReactW3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in React美团点评技术团队
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2twMVC
 
ReactMaker start kit intro
ReactMaker start kit introReactMaker start kit intro
ReactMaker start kit intro昇倫 蔡
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC
 
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)Will Huang
 
React基礎教學
React基礎教學React基礎教學
React基礎教學昇倫 蔡
 
twMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC#29 | 當.Net Core 遇到AWS LambdatwMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC#29 | 當.Net Core 遇到AWS LambdatwMVC
 
twMVC#23 | 快速上手 Azure Functions
twMVC#23 | 快速上手 Azure FunctionstwMVC#23 | 快速上手 Azure Functions
twMVC#23 | 快速上手 Azure FunctionstwMVC
 
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程洧杰 廖
 
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvctwMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvctwMVC
 
React js入門
React js入門React js入門
React js入門昶宇 賴
 
Javascript template & react js 初探
Javascript template & react js 初探Javascript template & react js 初探
Javascript template & react js 初探wantingj
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構Andrew Wu
 

Mais procurados (20)

SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
 
twMVC#21 | 你所不知道的 Visual Studio
twMVC#21 | 你所不知道的 Visual StudiotwMVC#21 | 你所不知道的 Visual Studio
twMVC#21 | 你所不知道的 Visual Studio
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18
 
twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結twMVC#26 | Redis資料型別與場景的連結
twMVC#26 | Redis資料型別與場景的連結
 
W3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in ReactW3CTech美团react专场-Thinking in React
W3CTech美团react专场-Thinking in React
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2
 
ReactMaker start kit intro
ReactMaker start kit introReactMaker start kit intro
ReactMaker start kit intro
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢
 
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
 
React基礎教學
React基礎教學React基礎教學
React基礎教學
 
twMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC#29 | 當.Net Core 遇到AWS LambdatwMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC#29 | 當.Net Core 遇到AWS Lambda
 
twMVC#23 | 快速上手 Azure Functions
twMVC#23 | 快速上手 Azure FunctionstwMVC#23 | 快速上手 Azure Functions
twMVC#23 | 快速上手 Azure Functions
 
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
 
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvctwMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvc
 
React js入門
React js入門React js入門
React js入門
 
Javascript template & react js 初探
Javascript template & react js 初探Javascript template & react js 初探
Javascript template & react js 初探
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
 

Destaque

Questionnaire Results
Questionnaire Results Questionnaire Results
Questionnaire Results jawgeenahh
 
Cd Covers Design
Cd Covers Design Cd Covers Design
Cd Covers Design jawgeenahh
 
Research music magazines
Research music magazinesResearch music magazines
Research music magazinesdanielrawlings
 
Music Presentation
Music PresentationMusic Presentation
Music Presentationjawgeenahh
 
music magazine ideas
music magazine ideasmusic magazine ideas
music magazine ideasjawgeenahh
 
CD COVERS: DIGIPAK DESIGNS
CD COVERS: DIGIPAK DESIGNSCD COVERS: DIGIPAK DESIGNS
CD COVERS: DIGIPAK DESIGNSjawgeenahh
 
CD Cover Digipak Designs
CD Cover Digipak DesignsCD Cover Digipak Designs
CD Cover Digipak Designsjawgeenahh
 
Music industry
Music industryMusic industry
Music industryjawgeenahh
 
Album cover: Photoshop Experimentation
Album cover: Photoshop ExperimentationAlbum cover: Photoshop Experimentation
Album cover: Photoshop Experimentationjawgeenahh
 
CD Covers: Digipak Design
CD Covers: Digipak DesignCD Covers: Digipak Design
CD Covers: Digipak Designjawgeenahh
 
高性能网站建设
高性能网站建设高性能网站建设
高性能网站建设feifeipan
 
Survey Monkey Results
Survey Monkey ResultsSurvey Monkey Results
Survey Monkey Resultsjawgeenahh
 
Researching music magazines
Researching music magazinesResearching music magazines
Researching music magazinesjawgeenahh
 
Final Storyboard
Final StoryboardFinal Storyboard
Final Storyboardjawgeenahh
 
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...Nome Sobrenome
 
Having a Niche Audience
Having a Niche AudienceHaving a Niche Audience
Having a Niche Audiencejawgeenahh
 

Destaque (19)

Questionnaire Results
Questionnaire Results Questionnaire Results
Questionnaire Results
 
Cd Covers Design
Cd Covers Design Cd Covers Design
Cd Covers Design
 
Research music magazines
Research music magazinesResearch music magazines
Research music magazines
 
Music Presentation
Music PresentationMusic Presentation
Music Presentation
 
Ideas
IdeasIdeas
Ideas
 
music magazine ideas
music magazine ideasmusic magazine ideas
music magazine ideas
 
CD COVERS: DIGIPAK DESIGNS
CD COVERS: DIGIPAK DESIGNSCD COVERS: DIGIPAK DESIGNS
CD COVERS: DIGIPAK DESIGNS
 
CD Cover Digipak Designs
CD Cover Digipak DesignsCD Cover Digipak Designs
CD Cover Digipak Designs
 
Music industry
Music industryMusic industry
Music industry
 
First draft magazine
First draft magazineFirst draft magazine
First draft magazine
 
Album cover: Photoshop Experimentation
Album cover: Photoshop ExperimentationAlbum cover: Photoshop Experimentation
Album cover: Photoshop Experimentation
 
First draft magazine
First draft magazineFirst draft magazine
First draft magazine
 
CD Covers: Digipak Design
CD Covers: Digipak DesignCD Covers: Digipak Design
CD Covers: Digipak Design
 
高性能网站建设
高性能网站建设高性能网站建设
高性能网站建设
 
Survey Monkey Results
Survey Monkey ResultsSurvey Monkey Results
Survey Monkey Results
 
Researching music magazines
Researching music magazinesResearching music magazines
Researching music magazines
 
Final Storyboard
Final StoryboardFinal Storyboard
Final Storyboard
 
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
 
Having a Niche Audience
Having a Niche AudienceHaving a Niche Audience
Having a Niche Audience
 

Semelhante a Dynamic JS Loader

从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型裕波 周
 
為瞬間巨量做好準備 20180726
為瞬間巨量做好準備 20180726為瞬間巨量做好準備 20180726
為瞬間巨量做好準備 20180726Earou Huang
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐zhangsuoyong
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践longhao
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超drewz lin
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)Cyril Wang
 
Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事Yihua Huang
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用luolonghao
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
TBAD F2E 2010 review
TBAD F2E 2010 reviewTBAD F2E 2010 review
TBAD F2E 2010 reviewleneli
 
前端杂谈
前端杂谈前端杂谈
前端杂谈salinet
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型裕波 周
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化kaven yan
 
腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享
腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享
腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享areyouok
 
110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavassZoom Quiet
 
Top100summit 游戏中的自动化测试 - 金山 - 白银祖
Top100summit 游戏中的自动化测试 - 金山 - 白银祖Top100summit 游戏中的自动化测试 - 金山 - 白银祖
Top100summit 游戏中的自动化测试 - 金山 - 白银祖drewz lin
 

Semelhante a Dynamic JS Loader (20)

从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
為瞬間巨量做好準備 20180726
為瞬間巨量做好準備 20180726為瞬間巨量做好準備 20180726
為瞬間巨量做好準備 20180726
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
 
Web爬虫那点事
Web爬虫那点事Web爬虫那点事
Web爬虫那点事
 
Berserk js
Berserk jsBerserk js
Berserk js
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
TBAD F2E 2010 review
TBAD F2E 2010 reviewTBAD F2E 2010 review
TBAD F2E 2010 review
 
前端杂谈
前端杂谈前端杂谈
前端杂谈
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化
 
腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享
腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享
腾讯大讲堂18 让我们戴上有色眼镜--qzone前台架构的优化分享
 
110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass
 
Top100summit 游戏中的自动化测试 - 金山 - 白银祖
Top100summit 游戏中的自动化测试 - 金山 - 白银祖Top100summit 游戏中的自动化测试 - 金山 - 白银祖
Top100summit 游戏中的自动化测试 - 金山 - 白银祖
 

Dynamic JS Loader