前端性能优化

一、前言

网页生成的过程:
要理解网页性能为什么不好,需要先了解网页是怎么生成的。
网页生成过程,大致分为五步:

1.HTML代码转化成DOM
2.css代码转化成CSSOM(css object model)
3.结合DOM和CSSOM,生成一颗渲染树(包含每个节点的视觉信息)
4.生成布局(layout),即将所有渲染树的所有节点进行平面合成
5.将布局绘制(paint)在屏幕上

这五步里面,第一步到第三步都非常快,耗时的是第四步和第五步。“生成布局”(flow)和绘制(paint)这两步,合称为“渲染”。

二、优化的意义

现阶段PC的性能绝大多数情况是过剩的,但移动端性能就参差不齐了,因此对移动端H5页面进行精细的性能优化是极其重要的。
移动端的WEB页面本身渲染性能产于Native的APP,只管产品的功能,不关注性能优化,将极大的影响Web页面的体验。

三、用户的感知

当用户能够在1-2秒内打开H5页面,看到信息的展示,或者能够开始进行下一步操作,用户会感觉速度还好,还可以接受;而页面如果在2-5秒后才可以进去可用的状态,用户的耐心会逐渐丧失;而如果一个界面查过5秒甚至更久才能显示出来,这对用户来说基本是无法忍受的,也许有一部分用户会推出重新进入,但更多的用户会直接放弃使用。

四、优化方案

1.首屏加载

当页面资源较多时,用户从点击开始加载页面,用户第一感知是什么时候加载完成。正常情况下,应该是在可见屏幕范围内,页面内容完全展示,如果在弱网状态下,会出现资源加载进度条,这样避免资源未加载完,展示出残缺不全的页面,影响用户体验,因此首屏加载,事件是一个重要的优化点。
在加载时间较长的时候,务必要让用户明确感知到加载完成的提示,通常是在加载过程中显示Loading的进度条,加载完成的时候隐藏它,从心理上,只会让用户有一种期待感,而不至于太多枯燥。
对于一些重量级的移动WEB应用,例如【游戏H5】、【场景式H5】,开始前需要加载很多资源,为了让后面的游戏过程更为流畅,一个 带百分比的进度条就显得格外重要。

2.按需加载

按需加载能够提升首屏加载速度,但尽可能避免对低性能的移动设备的影响,按需加载可能带来更多的重绘,从而降低了渲染性能,出现卡顿死机现象。

3.资源懒加载Lazyload

懒加载已经有很多成熟方案,PC端常用的优化点,同样适用于移动端。滚屏加载利用浏览器空闲时间请求将来要使用的资源,以便用户访问下一页时更快地响应。无条件预先加载:页面加载完成(load)后,马上获取其他资源。

4.尽量减少HTTP请求

用户响应时间的80%是发生在前端。
图像,样式表,脚本,FLash等减少部件数量也就降低了呈现网页所需的HTTP请求的数量:其中的大部分时间实在下载的网页的所有组件。
图片资源:
--css sprite
--base64:URL(内链资源,有兼容问题,不会被缓存);
--SVG sprite(未来趋势,国外大量网站在使用);
--icon font
--利用css3绘制简单icon
Javascript、css、HTML等
--合并文件并压缩文件;
--尽量使用css3动画代替JS/flash动画
--尽量使用外联js和css资源
服务器、域名等部署
--服务器端启用Gzip技术
--利用CDN加速静态资源
--资源分域存放,分域请求
--减少cookie
--配置Etag文件版本标识,高效利用缓存,避免重复下载
--服务端接口合并
--避免与服务器接口不必要的数据传输
--合理选用GET、POST请求方式
--尽量避免重定向
-在定义链接地址的href属性的时候,尽量使用最完整的、直接的地址。
--最大限度地减少DOM访问
-避免使用javascript固定布局
-避免空图片src

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 围绕前端的性能多如牛毛,涉及到方方面面,以我我们将围绕PC浏览器和移动端浏览器的优化策略进行罗列注意,是罗列不是展...
    流动码文阅读 3,942评论 0 0
  • 前言 对于前端的性能话题,从来都没有断绝过。因为这个东西没有最好,只有更好。而且往往也是业务的繁杂程度去决定优化程...
    Layzimo阅读 28,739评论 2 51
  • 性能优化的话大致有以下几个部分:加载优化图片优化CSS优化脚本优化渲染优化 加载优化 1.减少http请求 基本原...
    进击的蒸汽机阅读 3,064评论 0 0
  • 上一篇讲了PC端的部分:前端性能优化(PC端),这次继续说移动端的。相对于PC端的,移动web浏览器上有一些明显的...
    今天的我吃饱了吗阅读 8,665评论 2 17
  • 时间:3月18日 学员:张书铭 任课教师:张老师 课程目标:1.了解风扇的结构 2.认识齿轮传动:大齿轮带动小齿轮...
    嘻_阅读 1,481评论 0 0

友情链接更多精彩内容