前端需要性能优化么?
性能优化一直以来都是前端工程领域中的一个重要部分。很多资料表明,网站应用的性能优化对于提高用户留存、转化率等都有积极影响。可以理解为,提升你的网站性能,就是提升你的业务数据(甚至是业务收入)。
性能优化广义上包含前端优化和后端优化。后端优化的关注点更多的时候是在增加资源利用率、降低资源成本以及提高稳定性上。相较于后端,前端的性能优化会更直接与用户的体验挂钩。从用户体验侧来说,前端服务 5s 的加载时间优化缩减 80%(1s) 与后端服务 50ms 的响应优化缩减 80%(10ms) 相比,用户的体验提升会更大。因此很多时候,与体验相关的性能的瓶颈会出现在前端。
我和一些同学接触的过程中,发现作为前端工程师,大家其实都具备一定的性能优化意识,同时也有自己的优化“武器库”,例如懒加载、资源合并、避免 reflow 等等。虽然大家对性能优化都有自己的思路,不过大多是分散在某几个点,较难形成一个完整的体系。
一、html文档结构标签语义化
1、首先什么是语义化呢?
语义化是指用合理HTML标记以及其特有的属性去格式化文档内容。机器在需要更少的人类干预的情况下能够研究和收集信息,让网页能够被机器理解,最终让人类受益。即用正确的标签做正确的事。
2、语义化的好处或者说存在的意义
① 有利于搜索引擎抓取
② 结构清晰的HTML在团队合作中的作用:代码可读、便于维护、提高开发效率、快速达成共识、利于二次开发。
③ 有利于盲人屏幕阅读器
二、css、js文件数量及大小
优化一般对于css、js是建议使用外联式来进行导入。我们可以对css、js做相应的规划也可以减少css、js的个数以减少http请求。同时也要注重减少重复代码,注重代码重复利用,以达到用最少的代码干最多的事。同时当项目要投入上线使用的时候,可以对css、js文件进行压缩,文件的减小可以加速文件的链接导入,以便加速网页的加载渲染。
可通过使用webpack,gulp等工具对Js文件进行合并。
三、图片的数量和大小
多个服务器请求会对站点的性能产生显著的影响。对一张图片进行导入又是一个http请求,因此我们应该减少图片的导入数量以便减少http请求。此处,我们必须提到一个名词“css精灵spirit”。css精灵是指包含多个不同的图标、按钮或图形的单个图像。因此我们可以把多张背景图片合并为一张然后对背景图片进行相应的定位。同时使用PNG8格式的图片相对于GIF来说比较少。而对于内容图片,可以对其进行适当的压缩,可以加快文档内容加载,或者如果是需要用户下载的