2013年5月 前端性能优化与模块化开发 李周全 lizhouquan@baidu.com.

Slides:



Advertisements
Similar presentations
职业生涯规划 陈 艳 天津民族中等职业技术学校. 以花为伴 —— 小于的花样年华 问题: 1 、小于的案例对你有什么启发? 2 、小于的职业发展过程中,有哪些转岗和晋升 的经历? 横向发展 纵向发展.
Advertisements

四川财经职业学院会计一系会计综合实训 目录 情境 1.1 企业认知 情境 1.3 日常经济业务核算 情境 1.4 产品成本核算 情境 1.5 编制报表前准备工作 情境 1.6 期末会计报表的编制 情境 1.2 建账.
颈椎病.  概述  西医认识  病因病机  临床表现  针灸治疗  预防调护 主要内容.
主编:邓萌 【点按任意键进入】 【第六单元】 教育口语. 幼儿教师教育口 语概论 模块一 幼儿教师教育口语 分类训练 模块二 适应不同对象的教 育口语 模块三 《幼儿教师口语》编写组.
第一組 加減法 思澄、博軒、暐翔、寒菱. 大綱 1. 加減法本質 2. 迷思概念 3. 一 ~ 七冊分析 4. 教材特色.
海南医学院附 院妇产科教室 华少平 妊娠合并心脏病  概述  妊娠、分娩对心脏病的影响  心脏病对妊娠、分娩的影响  妊娠合病心脏病的种类  妊娠合并心脏病对胎儿的影响  诊断  防治.
植树节的由来 植树节的意义 各国的植树节 纪念中山先生 植树节的由来 历史发展到今天, “ 植树造林,绿化祖国 ” 的热潮漫卷 了中华大地。从沿海到内地,从城市到乡村,涌现了多少 造林模范,留下了多少感人的故事。婴儿出世,父母栽一 棵小白怕,盼望孩子和小树一样浴光吮露,茁壮成长;男 女成婚,新人双双植一株嫩柳,象征家庭美满,幸福久长;
客户协议书 填写样本和说明 河南省郑州市金水路 299 号浦发国际金融中 心 13 层 吉林钰鸿国创贵金属经营有 限公司.
浙江省县级公立医院改革与剖析 马 进 上海交通大学公共卫生学院
第二章 环境.
教师招聘考试 政策解读 讲师:卢建鹏
了解语文课程的基本理念,把握语文素养的构成要素。 把握语文教育的特点,特别是开放而有活力的语文课程的特点。
北台小学 构建和谐师生关系 做幸福教师 2012—2013上职工大会.
福榮街官立小學 我家孩子上小一.
第2期技職教育再造方案(草案) 教育部 101年12月12日 1 1.
企业员工心态管理培训 企业员工心态管理培训讲师:谭小琥.
历史人物的研究 ----曾国藩 组员: 乔立蓉 杜曜芳 杨慧 组长:马学思 杜志丹 史敦慧 王晶.
教育部高职高专英语类专业教学指导委员会 刘黛琳 山东 • 二○一一年八月
淡雅诗韵 七(12)班 第二组 蔡聿桐.
第七届全国英语专业院长/系主任高级论坛 汇报材料
小數怕長計, 高糖飲品要節制 瑪麗醫院營養師 張桂嫦.
制冷和空调设备运用与维修专业 全日制2+1中等职业技术专业.
会计信息分析与运用 —浙江古越龙山酒股份有限公司财务分析 组员:2006级工商企业管理专业 金国芳 叶乐慧 魏观红 徐挺挺 虞琴琴.
第六章 人体生命活动的调节 人体对外界环境的感知.
芹菜 英语051班 9号 黄秋迎 概论:芹菜是常用蔬菜之一,既可热炒,又能凉拌,深受人们喜爱。近年来诸多研究表明,这是一种具有很好药用价值的植物。 别名:旱芹、样芹菜、药芹、香芹、蒲芹 。 芹菜属于花,芽及茎类。
2012年 学生党支部书记工作交流 大连理工大学 建工学部 孟秀英
北京市职业技能鉴定管理中心试题管理科.
2014吉林市卫生局事业单位招聘153名工作人员公告解读
各類所得扣繳法令 與申報實務 財政部北區國稅局桃園分局 103年9月25日
初級游泳教學.
爱国卫生工作的持续发展 区爱卫办 俞贞龙.
第八章 数学活动 方程组图象解法和实际应用
本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响. 本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响.
散文鉴赏方法谈.
日月光·伯爵居项目介绍.
比亚迪集成创新模式探究 深圳大学2010届本科毕业论文答辩 姓名:卓华毅 专业:工商管理 学号: 指导老师:刘莉
如何撰写青年基金申请书 报 告 人: 吴 金 随.
点击输 入标题 点击输入说明性文字.
國際志工海外僑校服務 越南 國立臺中教育大學 2010年國際志工團隊.
痰 饮.
香港故事之 三年零八個月的艱苦歲月 組員: 梁珮瑩 吳遠莉 李琪 李青儀 方松皓.
學分抵免原則及 學分抵免線上操作說明會.
教 学 查 房 黄宗海 南方医科大学第二临床医学院 外科学教研室.
评 建 工 作 安 排.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
首都体育学院 武术与表演学院 张长念 太极拳技击运用之擒拿 首都体育学院 武术与表演学院 张长念
现行英语中考考试内容与形式的利与弊 黑龙江省教育学院 于 钢 2016, 07,黄山.
第5讲:比较安全学的创建 吴 超 教授 (O)
彰化縣西勢國小備課工作坊 新生入學的班級經營 主講:黃盈禎
重庆市西永组团K标准分区基本情况介绍.
西貢區歷史文化 清水灣 鍾礎營,楊柳鈞,林顥霖, 譚咏欣,陳昭龍.
所得稅扣繳法令與實務 財政部北區國稅局桃園分局 102年12月19日 1 1.
紓壓腹部撇步 彭易璟 老師 第10組 4A055935林資淳 4A155002詹柏廷 497C0095林千慈 498J3041 郭人慈.
脊柱结核 三峡大学仁和医院 郑之和.
我的故事 ————往事回首.
郭子光教授从肺肾虚损辨治早中期慢性肾功能不全的经验
女生成功靠什么? 09英本四班 傅柏双.
国际投资环境罗氏评级法 美国.
社会保障学 第5章 失业保险.
主 题 班 会 团 结   协 作    力 量.
理想.
固定与搬运技术 义乌市中心医院 陈红卫.
中鸣虚拟搜救比赛项目 (一人) 现场主题创作(40%)(一人) 3D虚拟搜救(60%)(一人).
案例分析 胎记美容记 第6小组
国开学习网/形考模块
人生五色臉 年輕十歲必學的小動作,九個保持身體健康的的小訣竅 人們常在不經意間做些小動作,並認為這是身體的本能反應,
创办紫金矿业学院 为培养中国一流的矿业人才助力 ——合作创办紫金矿业学院的思路与实践
基础信贷法律知识 讲解人:岳杨.
97學年度專題成果展 畢業生職業性向測驗系統之建立
Presentation transcript:

2013年5月 前端性能优化与模块化开发 李周全 lizhouquan@baidu.com

性能优化 不谈广告,只看疗效

性能优化 性能优化工作就像是医生给病人看病,需要对症下药 http://sarahhylandcentral.com/wp-content/uploads/2012/10/doctor-mri-Small.jpg

淘宝详情页 特点:Dom元素多,首屏渲染慢

优化方法 减少首屏DOM节点数,setTimeout延迟构建HTML 优化效果:

百度首页导航 特点:展现简单,交互复杂,JS量大

Baidu.widget.load(“A”,function(A){ 优化方法 首屏JS最小化,用户有操作后再延迟加载 用户访问页面 加载首屏代码 Baidu.widget.load(“A”,function(A){ A.doSomething(); }) 用户操作A模块 优化效果:

常规手段 CSS置顶,JS置底,CSS Sprite 静态资源外联、合并、压缩. 图片优化。 —— Png使用pngcrush;Gif使用gifsicle;Jpeg使用jpegtran 图片延迟加载。 静态文件上CDN ——提速20%左右 静态文件设置强缓存。 ——命中强缓存80%左右;命中弱缓存4%左右; HTML压缩。 ——gzip后减小5%左右 泛域名

增强型手段 基础库定制 ——用代码分析代码,自动打包被使用到的方法作为基础库,使基础库从原来的压缩后25K减小为9.8K,减小了60% 页面数据存储优化。 ——模板到页面的同步数据,从原来的直接写json形式的script,改为将json隐藏在textarea中,初始化或用到的时候才去提取并进行解析。 JS按需加载 ——JS代码每减小1k,性能提升10ms左右 如何做到对症下药?

性能监控 工欲善其事,必先利其器

性能监控的目的 辅助分析,发现性能瓶颈 监测每次上线带来的影响,及时发现问题

页面监控 页面大小、DOM元素数、静态文件大小

速度监控 页面渲染不同阶段的监控 可以看出:这个页面性能的瓶颈在script的下载和解析上 Head时间 – head标签加载完成的时间 TTi时间 –  页面可交互时间(首屏时间?) Dom时间–  Dom Ready的时间 Load 时间–  页面完全加载完成的时间 可以看出:这个页面性能的瓶颈在script的下载和解析上

更多监控 按浏览器 按地域 按运营商 按时段

性能周边 用户网速测试 静态文件监控 JS报错监控 CPU监控 - ? 增量式发布 模板预编译发布 —— 小于10k/s的用户占到了10%左右 静态文件监控 —— css总是有一定的丢失率。 JS报错监控 —— 上线后有js报错怎么办,是否可以比用户先感觉到? CPU监控 - ? 增量式发布 —— 每次编译都生成新的文件。 index_4f38ab.js。避免上线过程中的短暂不可访问 模板预编译发布 —— 避免模板编译时,用户请求被大量hang住

附:网速测试

JS按需加载 只提供给用户他所需要的代码

JS加载机制 页面直接引用 动态创建script标签 1. 直接创建<script> 标签,js自执行 2. 通过加载器,有回调方法

Baidu.widget.load(“C”,function(c){ Baidu.widget.load(“C”,function(c){ 泥潭 假设一个页面,A模块和B模块的代码都需要延迟加载执行,且他们都依赖C模块 用户访问页面 加载首屏代码 Baidu.widget.load(“C”,function(c){ C.doSomething(); }) 用户操作A模块 C.doSomething(); ? 用户操作B模块 Baidu.widget.load(“C”,function(c){ C.doSomething(); }) 文件加载混乱 代码形式不统一 ?

让文件的加载透明 .js / .css 浏览器 加载器

模块化开发 众神归位,各司其职

模块化机制 加载器 文件映射 模块定义 (js/css) 模块调用 require / use 打包配置

模块化开发 http://www.commonjs.org/ http://seajs.org

文件打包 – 模块化

模块化带来的好处 文件加载机制对开发者透明 按需加载及打包配置更清晰 模块间耦合降低 SVN拆分变得非常容易 – 各svn做自己的加载配置。F.use(“svn目录名:模块名”) 更适合做JS单元测试

模块化以后的整体设计

SVN拆分 应用场景:一个页面里有多个模块,同时在做升级。 模块定义 (js/css) SVN-1 svn1文件映射 模块定义 加载器 页面内调用 use(svn-x:模块名/文件名) SVN-2 svn2文件映射 模块定义 (js/css) SVN-3 每个svn都可以主干开发,独立上线,没有了代码合并与等待成本 1-2版本发布/周 优化为 1-2版本/天 svn3文件映射

2013年5月 THE END Thank you! 李周全 lizhouquan@baidu.com