首页 > 其他分享 >移动端H5前端性能优化脚本执行优化

移动端H5前端性能优化脚本执行优化

时间:2023-06-10 11:02:03浏览次数:63  
标签:渲染 前端 H5 使用 页面 优化 CSS 加载

移动端+HTML5,这个组合对前端工程师来说是个不小的挑战:如何让开发的页面能有更好的体验?这就是我们今天讨论的话题: 移动端HTML5页面前端性能优化

如何优化HTML5在移动设置上的性能表现,首先需要明确以下几个原则:

1、PC优化手段在Mobile端同样适用。

2、在Mobile侧我们提出三秒种渲染完成首屏指标。

3、基于第二点,首屏加载3秒完成或使用Loading。

4、基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB。

5、Mobile端因手机配置原因,除加载外渲染速度也是优化重点。

6、基于第五点,要合理处理代码减少渲染损耗。

7、基于第二、第五点,所有影响首屏加载和渲染的代码应在处理逻辑中后置。

8、加载完成后用户交互使用时也需注意性能。

之所以说是神图,是因为它基本上涵盖了所有的优化方案!非常详尽!在这里,我们针对其中几个代表性方案进行探讨:

加载优化

对于移动端的网页来说,加载过程是最为耗时的过程,可能会占到总耗时的80%时间,因此是优化的重点,当然,手机站的其他前端要素优化也是不能忽略的。

1 、减少HTTP请求

因为手机浏览器同时响应请求为4个请求(Android支持4个,iOS 5后可支持6个),所以要尽量减少页面的请求数,首次加载同时请求数不能超过4个,建议优化要点为以下2点:

1、合并CSS、Java

2、合并小图片,使用雪碧图

2 、缓存

使用缓存可以减少向服务器的请求数,节省加载时间,所以所有静态资源都要在服务器端设置缓存,并且尽量使用长Cache(长Cache资源的更新可使用时间戳)。

1、缓存一切可缓存的资源

2、使用长Cache(使用时间戳更新Cache)

3、使用外联式引用CSS、Java

3 、压缩HTML、CSS、Java

减少资源大小可以加快网页显示速度,所以要对HTML、CSS、Java等进行代码压缩,并在服务器端设置GZip。

1、压缩(例如,多余的空格、换行符和缩进)

2、启用GZip

4 、无阻塞

写在HTML头部的Java(无异步),和写在HTML标签中的Style会阻塞页面的渲染,因此CSS放在页面头部并使用Link方式引入,避免在HTML标签中写Style,Java放在页面尾部或使用异步方式加载

5 、使用首屏加载

首屏的快速显示,可以大大提升用户对页面速度的感知,因此应尽量针对首屏的快速显示做优化。

6 、按需加载

将不影响首屏的资源和当前屏幕资源不用的资源放到用户需要时才加载,可以大大提升重要资源的显示速度和降低总体流量。

1、LazyLoad

2、滚屏加载

3、通过Media Query加载

另外,提醒大家一点:按需加载会导致大量重绘,影响渲染性能。

7 、预加载

大型重资源页面(如游戏)可使用增加Loading的方法,资源加载完成后再显示页面,但Loading时间过长,会造成用户流失。

1、可感知Loading(如进入空间游戏的Loading)

2、不可感知的Loading(如提前加载下一页)

3、对用户行为分析,可以在当前页加载下一页资源,提升速度。

8 、压缩图片

图片是最占流量的资源,因此尽量避免使用他,使用时选择最合适的格式(实现需求的前提下,以大小判断),合适的大小,然后使用智图压缩,同时在代码中用Srcset来按需显示。

1、使用智图

2、使用其它方式代替图片(使用CSS3;使用SVG;使用IconFont)

3、使用Srcset

4、选择合适的图片(webP优于JPG;PNG8优于GIF)

5、选择合适的大小(首次加载不大于1014KB;基于手机屏幕一般宽度不宽于640)

提醒大家一点:过度压缩图片大小影响图片显示效果。

9 、减少Cookie,避免重定向以及异步加载第三方资源

Cookie会影响加载速度,所以静态资源域名不使用Cookie。另外,重定向会影响加载速度,所以在服务器正确设置避免重定向。还有,第三方资源不可控会影响页面的加载和显示,因此要异步加载第三方资源。


脚本执行优化

脚本处理不当会阻塞页面加载、渲染,因此在使用时需要注意以下几点:

1、CSS写在头部,Java写在尾部或异步。

2、避免图片和iFrame等的空Src,空Src会重新加载当前页面,影响速度和效率。

3、尽量避免重设图片大小,重设图片大小是指在页面、CSS、Java等中多次重置图片大小,多次重设图片大小会引发图片的多次重绘,影响性能。

4、图片尽量避免使用DataURL,DataURL图片没有使用图片的压缩算法文件会变大,并且要解码后再渲染,加载慢耗时长。


CSS优化

1、尽量避免写在HTML标签中写Style属性。

2、避免CSS表达式,CSS表达式的执行需跳出CSS树的渲染,因此请避免CSS表达式。

3、移除空的CSS规则,空的CSS规则增加了CSS文件的大小,且影响CSS树的执行,所以需移除空的CSS规则。

4、正确使用Display的属性,Display属性会影响页面的渲染,建议各位站长要合理使用。

(1)、display:inline后不应该再使用width、height、margin、padding以及float

(2)、display:inline-block后不应该再使用float

(3)、display:block后不应该再使用vertical-align

(4)、display:table-\*后不应该再使用margin或者float

5、不滥用Float,Float在渲染时计算量比较大,尽量减少使用。

6、不滥用Web字体,Web字体需要下载,解析,重绘当前页面,尽量减少使用。

7、不声明过多的Font-size,过多的Font-size引发CSS树的效率。

8、值为0时不需要任何单位,为了浏览器的兼容性和性能,值为0时不要带单位。

9、标准化各种浏览器前缀

(1)、无前缀应放在最后。

(2)、CSS动画只用(-webkit- 无前缀)两种即可。

(3)、其它前缀为“-webkit- -moz- -ms-无前缀”四种(-o-Opera浏览器改用blink内核,所以淘汰)。

10、避免让选择符看起来像正则表达式。

高级选择器执行耗时长且不易读懂,避免使用。


JAVA 执行优化

1、减少重绘和回流

(1)、避免不必要的Dom操作

(2)、尽量改变Class而不是Style,使用classList代替className

(3)、避免使用document.write

(4)、减少drawImage

2、缓存Dom选择与计算,每次Dom选择都要计算,缓存他。

3、缓存列表.length,每次.length都要计算,用一个变量保存这个值。

4、尽量使用事件代理,避免批量绑定事件。

5、尽量使用ID选择器,ID选择器是最快的。

6、TOUCH事件优化,使用touchstart、touchend代替click,因快影响速度快,但应注意Touch响应过快,易引发误操作。


渲染优化

HTML文档是以包含文档编码信息的数据流方式在网络间传输,页面的编码信息一般会在HTTP响应的头部信息或在文档内的HTML标记中指明,客户端浏览器只有在确定了页面编码后才能正确的渲染页面,所以在绘制页面或执行任何的java代码前,大部分的浏览器(ie6、ie7、ie8除外)都 会缓冲一定字节的数据来从中查找编码信息,不同的浏览器当中预缓冲的字节数是不一样的。

1 、HTML使用Viewport

Viewport可以加速页面的渲染,请使用以下代码:

2 、减少Dom节点

Dom节点太多影响页面的渲染,应尽量减少Dom节点。

3 、动画优化

(1)、尽量使用CSS3动画。

(2)、合理使用requestAnimationFrame动画代替setTimeout。

(3)、适当使用Canvas动画5个元素以内使用css动画,5个以上使用Canvas动画(iOS8可使用webGL)。

4 、高频事件优化

Touchmove、Scroll事件可导致多次渲染。

(1)、使用requestAnimationFrame监听帧变化,使得在正确的时间进行渲染。

(2)、增加响应变化的时间间隔,减少重绘次数。

5 、GPU加速

CSS中以下属性(CSS3 transitions、CSS3 3Dtransforms、Opacity、Canvas、WebGL、Video)来触发GPU渲染,请合理使用。(PS:过渡使用会引发手机过耗电增加。)

完整H5商城附件:点此下载

标签:渲染,前端,H5,使用,页面,优化,CSS,加载
From: https://blog.51cto.com/u_15723831/6454235

相关文章

  • 前端vue实现页面加水印文字 单个页面所有页面加水印 水印颜色
    前端vue实现页面加水印文字,可以实现系统所有页面加水印,也可以单个页面加水印,可更改水印颜色, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id=12889效果图如下:   ####使用方法```使用方法/*给系统所有页面加水印*///第一个......
  • 前端仿新浪新闻 tabs 选项卡tabs标签页,根据文字多少自适应 tab项宽度
    前端仿新浪新闻tabs选项卡tabs标签页,根据文字多少自适应tab项宽度, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id=12876效果图如下:  实现代码如下:####使用方法```使用方法<!--v-model:选择序列tabs:选择数组myColor:下划线颜......
  • 前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页
    前端vue简单好用的上拉加载下拉刷新组件,支持列表分页本地分页, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id=12942效果图如下:    ####使用方法```使用方法<!--pullDown:下拉刷新back-top:回到顶部 --><ccPullScro......
  • 前端vue地图定位并测算当前定位离目标位置距离可用于签到打卡
    前端vue地图定位并测算当前定位离目标位置距离可用于签到打卡, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id=12974效果图如下:   #####使用方法```使用方法<!--//腾讯地图key注册地址(针对H5端,manifest.json中web配置,配置定......
  • Python批量Excel文件数据导入SQLite数据库的优化方案
    说明:1)需要安装扩展库openpyxl;2)随着数据库的增大,导入速度可能会有所下降;3)本文只考虑Python代码优化,没有涉及数据库的优化;4)本文要点在于使用executemany实现批量数据导入,通过减少事务提交次数提高导入速度。fromrandomimportchoice,randrangefromstringimportdigits,ascii......
  • Hive执行计划之什么是hiveSQL向量化模式及优化详解
    Hive开启向量化模式也是hiveSQL优化方法中的一种,可以提升hive查询速率,也叫hive矢量化。问题1:那么什么是hive向量化模式呢?问题2:hive向量化什么情况下可以被使用,或者说它有哪些使用场景呢?问题3:如何查看hive向量化使用的相关信息?1.什么是hive向量化模式hive向量化模式是hive的一......
  • 小鹿线前端就业实训室靠谱嘛?
    现在web前端开发开发技术在不断地迭代更新,有很多从事前端开发的程序员在技术上会遇到瓶颈,这个时候小伙伴就应该通过不断的学习开发技术知识,来提升自身的开发技术水平,那小伙伴应该怎么来学习呢?1.梳理清楚知识体系框架学习前端开发技术,不管是入门还是进阶,一定都要有知识体系建设......
  • 前端学习C语言 - 开篇
    前端学习C语言-开篇前端学习C语言有很多理由:工作、兴趣或其他。C语言几个常见的使用场景:操作系统开发:Linux操作系统的内核就是主要由C语言编写的。其他操作系统也广泛使用C语言进行核心部分的开发。系统级开发和嵌入式编程:C语言具有强大的底层控制能力和高效的代码......
  • 关于EasyPlayer.js播放器检测m3u8视频是否为H.265的优化
    EasyPlayer是可支持H.264/H.265视频播放的流媒体播放器,性能稳定、播放流畅,可支持的视频流格式有RTSP、RTMP、HLS、FLV、WebRTC等,具备较高的可用性。EasyPlayer还拥有Windows、Android、iOS版本,其灵活的视频能力,极大满足了用户的多样化场景需求。在播放器EasyPlayer.js5.0.7版本......
  • 使用Animate和CreateJS设计H5页面
    Animate和CreateJS是常用于HTML5页面设计的工具,通过使用这些工具,可以创建各种动画特效,从而提高交互性和视觉效果。游戏:Animate和CreateJS可以用于创建精彩的网页游戏,比如跑酷类、动作类、益智类等众多不同类型的游戏。这些游戏通常需要丰富的场景设计、角色设定、音效、背景音......