- 2
- 0
- 约1.58万字
- 约 20页
- 2017-02-01 发布于重庆
- 举报
前端工程与性能优化.
前端工程与性能优化 每个参与过开发企业级 web 应用的前端工程师或许都曾思考过前端性能优化方面的问题。我们有雅虎 14 条性能优化原则,还有两本很经典的性能优化指导书:《高性能网站建设指南》、《高性能网站建设进阶指南》。经验丰富的工程师对于前端性能优化方法耳濡目染,基本都能一一列举出来。这些性能优化原则大概是在 7 年前提出的,对于 web 性能优化至今都有非常重要的指导意义。 然而,对于构建大型 web 应用的团队来说,要坚持贯彻这些优化原则并不是一件十分容易的事。因为优化原则中很多要求与工程管理相违背,比如“把 css 放在头部”和“把 js 放在尾部”这两条原则,我们不能让整个团队的工程师在写样式和脚本引用的时候都去修改同一份的页面文件。这会严重影响团队成员间并行开发的效率,尤其是在团队有版本管理的情况下,每天要花大量的时间进行代码修改合并,这项成本是难以接受的。因此在前端工程界,总会看到周期性的性能优化工作,辛勤的前端工程师们每到月圆之夜就会倾巢出动根据优化原则做一次最佳实践。 本文从一个全新的视角来思考 web 性能优化与前端工程之间的关系,通过解读百度前端集成解决方案小组(F.I.S)在打造高性能前端架构并统一百度 40 多条前端产品线的过程中所经历的技术尝试,揭示前端性能优化在前端架构及开发工具设计层面的实现思路。 性能优化原则及分类 笔者先假设本文的读者是有前端开发经验的工程师,并对企业级 web 应用开发及性能优化有一定的思考。因此我不会重复介绍雅虎 14 条性能优化原则,如果您没有这些前续知识的,请移步这里来学习。 首先,我们把雅虎 14 条优化原则,《高性能网站建设指南》以及《高性能网站建设进阶指南》中提到的优化点做一次梳理,如果按照优化方向分类可以得到这样一张表格: 优化方向优化手段请求数量合并脚本和样式表,CSS Sprites,拆分初始化负载,划分主域请求带宽开启 GZip,精简 JavaScript,移除重复脚本,图像优化缓存利用使用 CDN,使用外部 JavaScript 和 CSS,添加 Expires 头,减少 DNS 查找,配置 ETag,使 AjaX 可缓存页面结构将样式表放在顶部,将脚本放在底部,尽早刷新文档的输出代码校验避免 CSS 表达式,避免重定向 目前大多数前端团队可以利用yui compressor或者google closure compiler等压缩工具很容易做到“精简 javascript ”这条原则,同样的,也可以使用图片压缩工具对图像进行压缩,实现“图像优化”原则,这两条原则是对单个资源的处理,因此不会引起任何工程方面的问题;很多团队也通过引入代码校验流程来确保实现“避免 css 表达式”和“避免重定向”原则;目前绝大多数互联网公司也已经开启了服务端的 Gzip 压缩,并使用 CDN 实现静态资源的缓存和快速访问;一些技术实力雄厚的前端团队甚至研发出了自动 CSS Sprites 工具,解决了 CSS Sprites 在工程维护方面的难题。使用“查找 - 替换”思路,我们似乎也可以很好的实现“划分主域”原则。 我们把以上这些已经成熟应用到实际生产中的优化手段去除掉,留下那些还没有很好实现的优化原则,再来回顾一下之前的性能优化分类: 优化方向优化手段请求数量合并脚本和样式表,拆分初始化负载请求带宽移除重复脚本缓存利用添加 Expires 头,配置 ETag,使 Ajax 可缓存页面结构将样式表放在顶部,将脚本放在底部,尽早刷新文档的输出 诚然,不可否认现在有很多顶尖的前端团队可以将上述还剩下的优化原则也都一一解决,但业界大多数团队都还没能很好的解决这些问题,因此接下来本文将就这些原则的解决方案做进一步的分析与讲解,从而为那些还没有进入前端工业化开发的团队提供一些基础技术建设意见,也借此机会与业界顶尖的前端团队在工业化工程化方向上交流一下彼此的心得。 静态资源版本更新与缓存 如表格 2 所示,在“缓存利用”分类中保留了“添加 Expires 头”和“配置 ETag ”两项,或许有些人会质疑,明明这两项只要配置了服务器的相关选项就可以实现,为什么说它们难以解决呢?确实,开启这两项很容易,但开启了缓存后,我们的项目就开始面临另一个挑战:如何更新这些缓存。 相信大多数团队也找到了类似的答案,它和《高性能网站建设指南》关于“添加 Expires 头”所说的原则一样——修订文件名。即: 思路没错,但要怎么改变链接呢?变成什么样的链接才能有效更新缓存,又能最大限度避免那些没有修改过的文件缓存不失效呢? 先来看看现在一般前端团队的做法:script type=text/javascript src=a.js?tscript 或者script type=text
您可能关注的文档
- 初三超级化学复习笔记..doc
- 初中2010年历史中考模拟考试试卷2..doc
- 初中七年级数学几何测试题..doc
- 初中中学教育学分章考试要点..doc
- 初中三年级《历史与社会》期中试卷命题分析..doc
- 初中2010年化学中考实战模拟测试试卷9..doc
- 初中中考英语语法大全..doc
- 初中九年级物理电学专题训练..doc
- 初中二年级英语试卷..doc
- 初中体育课足球教学教案大全..doc
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 2024-2025学年人教版八年级数学下册期末模拟试卷(含答案).pdf VIP
- 小学三年级语文上册课外阅读叶圣陶地球.docx VIP
- 马工程教学课件《管理学》(第二版)第十六章 组织变革与创新.pptx VIP
- 马工程教学课件《管理学》(第二版)-第一章 管理与管理活动.pptx VIP
- 2025年高考文科综合真题卷(附答案解析).docx VIP
- 马工程教学课件《管理学》(第二版)第九章-领导的一般理论.pptx VIP
- 马工程教学课件《管理学》(第二版)第十章-激励.pptx VIP
- 2022年11月12日事业单位联考A类《职业能力倾向测验》答案+解析.pdf VIP
- 山东省危险化学品企业事故隐患源头治理要素管理指南(试行).pdf VIP
- 医学统计学-参数估计与假设检验 PPT.pptx VIP
原创力文档

文档评论(0)