WJ-Yuan / Notes

My Tech Notes
https://wj-yuan.github.io/Notes/
0 stars 0 forks source link

[Notes][Project] FE Performance Optimization / 前端性能优化手段 #6

Open WJ-Yuan opened 1 year ago

WJ-Yuan commented 1 year ago

A: Action R: Reason

高优先级

避免使用 iframe

R: 性能表现差,可达性和可用性差,不能被搜索引擎检索。

生产环境压缩 css

R: 提高内容加载速度。 A: 压缩掉注释、空格、换行等,很多打包工具带有相应功能。

非阻塞的 CSS

R:CSS 文件可能会阻止页面加载并延迟页面的渲染。 A: 使用 preload 来提前加载 CSS

<link
  rel="preload"
  href="css/global.min.css"
  as="style"
  onload="this.rel='stylesheet'"
/>

内联首屏或重要 CSS 样式

减少内联样式

R:

A: 使用外部样式或者 style 标签样式

分析 css 复杂度

图像资源大小优化

R: 提高响应速度,减少资源开销 A:

https://web.dev/fast/#optimize-your-images

选择合适的图片格式

R: 同上 A:

压缩 JS 资源

R: 加快网站的页面加载时间,并明显减轻用户的下载量 A: 注释、空格和换行符都从生产文件中删除(如果使用 HTTP/2 仍然有效)

使用 defer 和 async 来异步加载脚本

使用 HTTPS

R: 提高网站安全

网站体积小于 1500 KB

R: 提高用户体验

网站响应时间尽量小于 3s

R: 留存用户

浏览器在接收数据之前等待的时间 TTFB < 1.3s

减少 不必要的 HTTP 请求

尽量保持网站源文件协议一致

避免请求无法访问的文件 (404)

R: 404 请求会降低网站的性能并对用户体验产生负面影响;可能导致搜索引擎抓取不存在的页面并将其编入索引

设置 HTTP 请求缓存

启用压缩 Gzip 或者 Brotli 减少 JS 文件体积大小

中优先级

压缩 HTML 文件大小(注释、空格、换行)

使用 CDN 存储静态资源

R: 减小服务器负载,提高站点性能

更多使用矢量图而不是位图

R: 矢量图像 (SVG) 往往比图像小,而且 SVG 响应灵敏且缩放完美。这些图像可以通过 CSS 进行动画处理和修改。

如果最终渲染图像尺寸已知,请设置 <img> 的宽度和高度属性

R: 提高 DOM 计算效率

避免使用 BASE64 图像

R:

屏幕外的图片懒加载

R: 提高当前页面的响应时间,然后避免加载用户可能不需要的不必要的图像。

提供响应式图像

R: 比如,小型设备不需要大于其视口的图像。 A:

避免将多个 JavaScript 代码嵌入到您的正文中

R: 将 JavaScript 嵌入代码直接放置在 <body> 中可能会减慢页面速度,因为它是在构建 DOM 时加载的。 A: 在外部文件中或最终在 <head> 或页面末尾(在 </body> 之前)重新组合您的 JavaScript 代码。

及时更新依赖包

检查 JavaScript 文件(以及 CSS)中的性能问题

使用 Service Worker

R: 缓存数据或者不影响主进程

Cookie 大小不超过 4096 字节且一个域最好不要超过 20 个 cookies

R: Cookie 在 Web 服务器和浏览器之间的 HTTP 标头中交换。保持 cookie 的大小尽可能小非常重要,以尽量减少对用户响应时间的影响。

低优先级

尽可能多使用 preload

HTTP1.1 尽量将 css 汇聚到一个文件里

移除无效 CSS

使用 WOFF 2.0 网页字体

R: WOFF 2.0 Web 字体压缩格式比 WOFF 1.0 平均增益提高了 30%。 A: 最好使用 WOFF 2.0、WOFF 1.0 和 TTF 作为后备。

使用 preconnect 预连接字体

A:

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />

字体体积最好小于 300KB

不要使用 flash 和 不可见文本

检查依赖项大小