zqinmiao / blog

博客
0 stars 0 forks source link

最强前端性能优化,Google已经为你准备好了 #10

Open zqinmiao opened 5 years ago

zqinmiao commented 5 years ago

经常有同学会问我,什么是性能优化,哪里学性能优化的知识。
我之前买了本《Web性能权威指南》里面也只是讲了大量的网络通信的理论知识,并没有过多提出软件开发过程中的实践操作。
当你苦苦找寻性能优化的系统教程,殊不知Google已经为你准备好了一份饕餮盛宴

我觉得对于软件工程来说,身为一个合格的开发者,要善于探索和发现。互联网给了我们丰富的开源技术和海量的信息,为何不去饥渴的去探索呢。下面就一起去探索这份全面而强大的性能优化指南吧。

一个网站的性能,可以分为两个方面,一个叫Loading Performance(加载性能),一个叫Rendering Performance(渲染性能)。

Loading Performance(加载性能)

怎么知道自己的网站有哪些性能问题呢?那当然要借助一些工具来检查:What are the different performance tools?

优化内容效率

我们通常需要获取几十个(有时甚至是几百个)不同的资源,所有这些资源加起来的数据量高达几兆字节,并且必须在短短几百毫秒内汇聚起来,以实现我们想要达到的即时网络体验。

在满足上述要求的前提下实现即时网络体验绝非易事,优化内容效率至关重要的原因就在于此:避免不必要的下载、通过各种压缩技术优化每个资源的传送编码以及尽可能利用缓存来避免多余的下载。

优化内容效率的主要措施:

JavaScript 启动优化

JavaScript 启动优化也包括几点,如下:

优化JavaScript

永远不要加载相同的资源两次

延迟加载资源

Intersection Observer API

关键渲染路径(CRP:Critical Rendering Path)

HTTP/2

资源优先级

使用webpack进行Web性能优化

Rendering Performance(渲染性能)

要编写高性能的网站和应用,您需要了解浏览器如何处理 HTML、JavaScript 和 CSS,并确保您编写的代码(和您要包括的其他第三方代码)尽可能高效地运行。

您在工作时需要了解并注意五个主要区域。 这些是您拥有最大控制权的部分,也是像素至屏幕管道中的关键点:

优化 JavaScript 执行

缩小样式计算的范围并降低其复杂性

避免大型、复杂的布局和布局抖动

简化绘制的复杂度、减小绘制区域

坚持仅合成器的属性和管理层计数

使输入处理程序去除抖动


以上就是性能优化的主要方式。把这些链接点点,把文章看看,你会发现性能优化是如此的有趣。当然,自此做性能优化也就变得简单了起来,哈哈。

还有一些相关的工具,也罗列一下: