前端性能优化建议


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 相关文章推荐
javascript基础知识大集锦(二) 推荐收藏
Jan 13 Javascript
jQuery实现 注册时选择阅读条款 左右移动
Apr 11 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
详解javascript事件冒泡
Jan 09 Javascript
Bootstrap每天必学之弹出框(Popover)插件
Apr 25 Javascript
javascript 中的console.log和弹出窗口alert
Aug 30 Javascript
原生JS实现在线问卷调查投票特效
Jan 03 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
Oct 12 Javascript
配置一个vue3.0项目的完整步骤
Apr 26 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
python实现可变变量名方法详解
2019/07/01 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
结构工程个人自荐信范文
2013/11/30 职场文书
大型活动策划方案
2014/01/12 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
安全大检查实施方案
2014/02/22 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python