博客性能优化笔记 | 99分

news/2024/10/11 16:23:47

闲着没事,拿 lighthouse 测了一下博客网站的性能评测,发现诊断出的问题还挺多,就顺手优化了一下。

这篇文章将记录这个优化的过程。

优化前后对比

lighthouse 检测结果

优化前 优化后

性能面板检测结果

FCP DOMContentLoaded LCP
优化前 764ms 1798ms 1864ms
优化后 496ms 507ms 496ms
  • FCP(First Contentful Paint)
  • LCP(Largest Contentful Paint)

检测工具

使用 Chrome 自带的 lighthouse 和 性能面板进行测试。

性能面板 lighthouse

发现问题

性能面板 | Performance

通过截图可以观察到每个时间的页面变化

发现的问题:

  1. 文章列表渲染后,文章封面图加载缓慢
  2. 图片完成加载时间过长(封面,头像图片)
  3. 布局渲染期间发生明显变化
  • 友链列表加载完成后
  • 左上头像加载完成

lighthouse

测试后会给到优化建议。

这里挑一些后面用到的

  1. 使用新的图片格式(WebP and AVIF)
  2. 减少没用到的CSS文件大小
  3. img 没有明确的宽高属性
  4. 资源传输压缩(gzip, brotli 等)
  5. 加载适当大小的图片(避免超过要展示的大小)
  6. 避免超大的资源加载阻塞网络(主要是一些超大的图片和js)

优化过程

图片优化

解决:1,2,4,8,9

① 裁剪为渲染的大小

② 格式调整为WebP格式

我的图片都是放在图床上的(七牛云,又拍云,缤纷云)。

这一步我直接使用 OSS(对象存储) 提供的图片加载裁剪功能即可。

配置目标:宽高裁剪为 120px * 80px,格式调整为 WebP 格式。

配置处理样式示例

七牛云 又拍云 缤纷云

使用:在原有的资源上添加对应的后置即可

  • 七牛云:url~cover.webp
  • 又拍云:url-cover
  • 缤纷云:url!style:cover

代码中的体现↓

封面 友链头像 头像

oml2d模型资源优化

博客左下角的看板娘加载优化。

解决:9

① 资源全部放在自己的 OSS 通过CDN加载(有gzip压缩,更快的访问速度)

② 将模型用到的PNG图片压缩

使用之前做的图片在线压缩工具

压缩后减少了 88% 的体积,视觉上看不出变化。

网络优化

解决:7,9

① 第三方资源使用 OSS存储 + CDN加载

② 访问使用 HTTP3/HTTP2

新的协议加载资源,用上多路复用的特性。

启用前提资源支持 HTTPS 访问(配置SSL证书),才能启用 HTTP2/3。

配置 HTTPS 时使用最新的 TLS1.3 版本,更快的加解密速度。

下面是在各平台开启相关配置示意。

七牛云 又拍云 缤纷云

优化前后对比

优化前 优化后

布局优化

解决:3,6

目标:减少触发 “页面回流重绘” 的范围和次数。

① 针对图片,限定具体渲染的宽高,避免图片加载后布局发生变化

② 针对后渲染区域,限定其容器的宽度,避免渲染后影响布局

减少无用代码

解决:5

① 移除无用的 js 脚本或者 CSS 资源

大概看了一下,项目里额外依赖的 element-plus 样式文件占大头。

将全量引入,手动调整为按需引入。

最终效果

性能面板 lighthouse

优化后的性能指标

  • FCP(First Contentful Paint):496ms
  • DOMContentLoaded:507ms
  • LCP(Largest Contentful Paint):496ms

访问 https://sugarat.top 可以看到效果还是很明显的。

总结

  1. 图片:压缩,加载合适尺寸,优先使用 WebP 格式
  2. 网络:HTTPS + HTTP2/3,OSS + CDN
  3. 布局:减少回流重绘范围与次数
  4. 资源:移除无用代码,无用的第三方资源加载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

配置pytorch

下载pytorch https://pytorch.org/下拉找到找到,下图样式查看自己电脑的GPU版本方法1 键盘按住Win + R ** ,输入cmd**在弹出界面输入nvidia-smi比如,我的GUP版本号是 12.2方法2 搜索nvidia弹出下图所示界面点击 帮助---> 系统信息在弹出界面点击组件 可到下图所示信息,…

第四周-云计算运维作业

1. 使用while read line和/etc/passwd,计算用户id总和。sum=0while read linedoecho " $line" &>/dev/null((sum++))done </etc/passwdecho "$sum"2. 总结索引数组和关联数组,字符串处理,高级变量使用及示例。 数组定义: emp[0]=zz emp[1]=z…

[openbve站]oldhelps openbve站v0.0.2推出上线公测

[openbve站]oldhelps openbve站v0.0.2推出上线公测 目录[openbve站]oldhelps openbve站v0.0.2推出上线公测1.归档页面增加图片显示 今天(5.4)起,openbve站上线第二个版本。此次更新的主要内容: 1.归档页面增加图片显示

开发Android应用程序,在Android10的系统上提示网络出错?

今天维护以前开发的一个Android客户端程序,发版后,有用户说自己手机安装,无法登录,首屏打开后(有网络通过接口加载服务器数据并显示的行为),提示网络出错。 但是我在我自己手上的PDA设备(Android 4.4)正常,然后又去找了一台Android设备,是Android8.0的,也正常。初步…

矢量金字塔技术研究

前言 在图像切片时代,多层次模型依靠的是影响金字塔。得益于影像栅格数据分辨率的特点,基于影像金字塔可以较好的实现多分辨率模型。但是在矢量切片时代中,就无法直接从影像金字塔技术获利了,因为矢量数据不具有分辨率这个特性,而是采用矢量金字塔技术来实现多层次、多尺度…

2022, 迟到的年终总结

前言 拖延症真的存在!!! 今天是2023年2月13日晚,我在此时写下本文的第二行内容。其实从年前就开始计划写一篇关于2022年的年终总结,无奈受到拖延病毒的威胁,一直拖到现在才暂时摆脱控制。 如题,本文将对2022年进行简要总结,同时对2023年做一个初步的展望(仅作记录)。…

GeoServer开发环境搭建

前言 本文用于记录GeoServer开发环境的搭建过程通过GeoServer发布计划可以看到,在2.23.x版本开始,会移除对jdk1.8的支持。那么当前我们会选择2.22.x版本进行研究 环境JAVA:1.8或11 Maven GitAction 获取源码git clone git://github.com/geoserver/geoserver.git geoserver# …

拂衣天气(微天气)Github Action镜像自动构建与推送

前言 这里暂不作过多的操作,还是保持与此前一致。即通过Github Action完成Docker Image的build与push,目标仓库为阿里云容器镜像服务实例(个人版)registry.cn-hangzhou.aliyuncs.com 那么一共分为三个部分:Dockerfile编写 阿里云容器镜像服务配置 Github ActionDockerfile…