深度探秘web前端性能优化

简介: 笔记

性能优化总论



1.性能优化的必要性

性能优化一直是我们在讨论的一个话题,也是很重要的知识点,当项目功能越来越多,模块规模一步步扩大,就会发生一系列的性能问题,比如说vue首屏加载会变得非常慢,编译会延迟,打包也要等半天。

必须明确性能优化的重要性,任何一个项目的生命历程都会走向性能优化这个阶段


2.性能优化的误区

我们经常会犯错误的一个地方是,混淆了性能优化与执行效率的概念。

比如:

1.while 循环快还是 for 循环快?

2.|0 是不是比 Math.floor 性能好?

3.if else 与三元运算符哪个更快?

很多人会认为以上三个问题就是性能优化的范畴了,会去纠结这些问题。然而实际上,这三个问题与性能优化毫无关系,不过是几个执行效率的问题罢了,纠结也无益。


3.什么才是前端的性能优化

总结来说,就是这三个方面

1.页面加载性能(加载的时间)

2.动画与操作性能(是否流畅无卡顿)

3.内存、电量消耗(内存占用,耗电量)


针对以上方面做性能优化



1.页面加载性能(加载的时间)

a.减少请求数


(1) js,css,打包到html,并为一个请求


(2) 精灵图,多个小图并为一个图片,只请求一次


(3) 小图片用字体图标代替,或者使用data-url


(4) js控制图片懒加载,异步加载,页面初始化的时候避免一次请求多张图片


b.减少传输体积


(1) js库存放在静态cdn上,项目执行的时候,一个链接拿过来就行


(2) 压缩策略,大图压缩(tinypng),代码压缩(webpack,Gzip)


(3) 优雅降级,根据用户网络状况以及机型控制图片清晰度


(4) 清晰度低的图片,锐化处理,提高用户体验


c.缓存策略


(1)  图片缓存


(2) 数据缓存,常用的就是地址选项,省市区,不用重复请求,缓存至用户本地即可


2.动画与操作性能

a.避免操作过多dom元素


可采用数据驱动,操作虚拟dom,通过diff算法,最后比较转换成真实dom


b.避免去操作元素的top,left等位置的值


如果去改变元素的top与left等值,会导致dom回流,可以采用dom重绘


dom回流:当页面中的html结构发生改变(增加、删除元素、位置发生改变),浏览器都需要重新计算一边新的DOM结构,重新对当前的页面进行渲染。回流非常消耗性能,特别是性能有限的移动端。

dom重绘:  当某个元素的部分样式发生了改变(如背景颜色、字体颜色、位置(使用transform的情况下)发生了改变),浏览器重新渲染当前元素即可。回流比重绘耗能耗时,所以在优化程序系统的时候,我们尽量要减少浏览器的DOM回流操作。


平时操作元素的top值,left的值可以用transform里的translate代替


3.内存、电量消耗

a.作用域问题 (内存相关)


(1) 避免定义无意义变量,每去var定一个值或者定一个对象都是占内存的


(2) 禁止滥用闭包,js垃圾回收机制不会回收闭包里的变量,它们将会常驻内存。


b.循环 (性能相关)


前端应避免大规模数据的比对与循环,可分开处理或交由后台先处理好,否则也会导致卡顿


c.电量消耗 (主要是前端做游戏的时候)


(1) 优化美术资源,比如合理规划图集,约定好模型的最大三角形面数,制定合理的粒子效果规范。这个可以说是游戏优化中最重要的一个,因此,技术美术在游戏开发中作用巨大。


(2) 简化或者优化着色器(shader),如在游戏开始前就对Shader进行编译和加载。


(3) 使用Batching,尽量减少DrawCall


Batching : 批处理动态或静态物体(批量处理,优化电量消耗)


DrawCall : CPU调用图形编程接口,比如DirectX或OpenGL,来命令GPU进行渲染的操作(描绘次数越多,耗电量越大)


以上是本人的总结与经验,如有不对,敬请指正。


目录
相关文章
|
29天前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
58 3
|
1月前
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
2天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
22 3
|
25天前
|
前端开发 安全 UED
2024年前端性能优化新策略
2024年前端性能优化策略涵盖代码分割与环境变量管理。代码分割通过动态导入和按需加载CSS减少初始加载时间;环境变量管理则确保敏感信息安全,简化多环境配置。结合最新工具和技术,可大幅提升Web应用性能与用户体验。
|
18天前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
22天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
31 6
|
22天前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
48 2
|
27天前
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
1月前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
下一篇
DataWorks