前端性能优化

一、前言

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

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