前端性能优化建议


Posted in Javascript onSeptember 17, 2020

前言:

一说到性能优化,大家都不约而同的想起了雅虎的军规,2-5-8原则,3秒的首屏准则等等,这些规则在开发中虽然不是强制要求的,但是为了追求页面性能的完美体验,就不得不对代码进行修改和优化。

下面就与大家一同分享一下我了解的一些性能优化指标:

一.加载优化

1. 减少HTTP请求:尽量减少向服务器发送的请求数,节省网络资源,所有静态资源都要放在服务器端并设置缓存,并且要尽量使用长缓存。

2. 压缩代码:减少资源大小可加快网页的显示速度,对代码进行压缩,并在服务器开启Gzip

3. 无阻塞:头部内联的样式和脚本会阻塞页面的渲染,样式放在头部使用link引入,脚本放在尾部并使用异步方式加载。

4. 首屏加载:首屏快速显示可大大的提升用户对页面速度的感知,应尽量针对首屏的快速显示做出相应的优化。

5. 按需加载:将不影响首屏的资源和当前屏幕不使用的资源放到用户需要时才加载,可大幅度提升显示速度和降低总体流量。但是按需加载会导致大量重绘,影响渲染性能。

6. 预加载:大型资源页面可使用Loading,资源加载完成后再显示页面,但是加载时间过长,会造成负体验。

7. 压缩图像:使用图像时选择最合适的格式和大小,然后使用工具压缩,同时在代码中进行图片懒加载。

8. 减少Cookie:Cookie会影响加载速度,所以尽量减少不必要的Cookie。

9. 异步加载第三方资源:第三方资源不可控,会影响页面加载,所以要异步加载第三方资源。

二.执行优化

1.css写在头部,js写在尾部并异步。

2.避免img、iframe等标签的src属性为空:空src会重新加载当前页面,影响速度和效率。

3.尽量避免重置图像大小:多次重置图像大小会引发图像的多次重绘,影响性能。

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

三.渲染优化

1.设置Viewport:HTML的viewport可加快页面的渲染。

2.减少DOM结点:DOM结点太多会影响页面的渲染。

3.尽量使用css3动画,合理使用requestAnimationFrame动画代替setTimeout。

4.优化高频事件:scroll、touchmove等事件尽量使用函数防抖节流等进行限制。

四.样式优化

1.避免在HTMl中书写style。

2.避免css表达式:css表达式的执行需要跳出css树的渲染。

3.移除css空规则:css空规则增加了css文件的大小。

4.正确使用display:display会影响页面的渲染。

5.不滥用float:float在渲染时计算量较大,尽量减少使用。

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

五.脚本优化

1.尽量减少回流和重绘。

2.缓存DOM选择与计算:每次DOM选择都要计算和缓存。

3.缓存.length的值:每次.length计算使用一个变量保存值。

4.尽量使用事件代理:避免批量绑定事件。

5.尽量使用id选择器:id选择器选择元素是最快的。

2-5-8原则

在前端开发中,此规则作为一种开发指导思路,针对浏览器页面的性能优化。

o 用户在2秒内得到响应,会感觉页面的响应速度很快 Fast

o 用户在2~5秒间得到响应,会感觉页面的响应速度还行 Medium

o 用户在5~8秒间得到响应,会感觉页面的响应速度很慢,但还可以接受 Slow

o 用户在8秒后仍然无法得到响应,会感觉页面的响应速度垃圾死了(「此时会有以下四种可能」)

§ 难道是网速不好,发起第二次请求 => 刷新页面

§ 什么垃圾页面呀,怎么还不打开 => 离开页面,有可能转投竞争对手的网站

§ 垃圾程序猿,做的是什么页面啊 => 咒骂开发此页面的程序猿

§ 断网了 => 网线断了?Wi-Fi断了?信号不好?话费用完了?

Ok完事儿,这就是本小白总结的一点点小经验啦~

以上就是前端性能优化建议的详细内容,更多关于前端性能优化的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
jQuery中click事件用法实例
Dec 26 Javascript
分享jQuery网页元素拖拽插件
Dec 01 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
Javascript实现基本运算器
Jul 15 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
说说AngularJS中的$parse和$eval的用法
Sep 14 Javascript
JS抛物线动画实例制作
Feb 24 Javascript
npm配置国内镜像资源+淘宝镜像的方法
Sep 07 Javascript
vuex直接赋值的三种方法总结
Sep 16 Javascript
mpvue 单文件页面配置详解
Dec 02 Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 #Javascript
JavaScript中如何调用Java方法
Sep 16 #Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 #Javascript
Vue父子组件传值的一些坑
Sep 16 #Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 #Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 #Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
Sep 16 #Javascript
You might like
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
python根据距离和时长计算配速示例
2014/02/16 Python
Python获取服务器信息的最简单实现方法
2015/03/05 Python
python中Genarator函数用法分析
2015/04/08 Python
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
JAVA中运算符的分类及举例
2015/09/12 面试题
《风筝》教学反思
2014/04/10 职场文书
铁路安全事故反思
2014/04/26 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
校友会致辞
2015/07/30 职场文书
导游词之镜泊湖
2019/12/09 职场文书
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA