首页 > 其他分享 >博客性能优化笔记 | 99分

博客性能优化笔记 | 99分

时间:2024-05-04 14:44:22浏览次数:21  
标签:lighthouse 渲染 博客 99 笔记 图片 优化 资源 加载

闲着没事,拿 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. 资源:移除无用代码,无用的第三方资源加载

标签:lighthouse,渲染,博客,99,笔记,图片,优化,资源,加载
From: https://www.cnblogs.com/roseAT/p/18172280

相关文章

  • 一键自动化博客发布工具,chrome和firfox详细配置
    blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了。很多小伙伴可能对于如何进行配置和启动不是很了解,今天带给大家一个详细的保姆教程,只需要跟着我的步骤一步来就可以无障碍启动了。前提条件前提条件当然是先下载blog-auto-publishing-tools......
  • 路径规划综述博客:A* Optimizations and Improvements
    地址:https://lucho1.github.io/JumpPointSearch/A*OptimizationsandImprovementsResearchWorkbyLuchoSuaya–UniversitatPolitècnicadeCatalunyaHeaderIamLuchoSuaya,astudentoftheBahcelor’sDegreeinVideoGamesbyUPCatCITM.Thiscont......
  • Razavi - RF Microelectronics的笔记 - Current-Driven Passive Mixer
    Onpage367,whilediscussingaboutcurrent-drivenpassivemixer,thereisthissaying:theswitchesinFig.6.39(b)alsomixthebasebandwaveformswiththeLO,deliveringtheupconvertedvoltagestonodeA.Iamquiteconfusedonwheredoesthiswave......
  • 统一场理论公式推导和笔记——part6
    三十九,统一场论能量方程1,能量的定义:能量是质点在空间中【或者质点周围空间本身】相对于我们观察者在某个空间范围内【由于时空同一化,也可以说在某一个时间段内】运动的运动量。能量和动量的定义是类似的,反映质点和空间相对于我们观察者的运动程度,所不同的是,动量是矢量,能量是标......
  • 统一场理论公式推导和笔记——part5
    三十七,运动电荷的磁场产生引力场1,匀速直线运动电荷的磁场产生引力场统一场论核心是变化的引力场可以产生电场,反过来,变化的电磁场也可以产生引力场。==》根据爱因斯坦的广义相对论,变化的电磁场确实可以产生引力场,尽管理论上变化电磁场会产生引力场,但由于电磁场的能量相对较小,......
  • P1010 [NOIP1998 普及组] 幂次方
    题目:P1010[NOIP1998普及组]幂次方[NOIP1998普及组]幂次方题目描述任何一个正整数都可以用2的幂次方表示。例如137=27+23+2^0。同时约定次方用括号来表示,即a^b可表示为a(b)。由此可知,137可表示为2(7)+2(3)+2(0)进一步:$7=22+2+20(2^1用2表示),并且3=2+2^......
  • FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放
    ​FFmpeg结合SDL可以播放音频文件,也能播放视频文件中的音频流,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playaudio.c支持播放mp3和aac两种格式的音频,却不支持播放其他格式的音频。因为mp3和aac两个格式拥有标准的规范定义,比如mp3规定每帧音频固定包含1152个样......
  • docker简单笔记
     这里不说基础概念的东西,直接上车出发 指令 docker-compose--help docker-composeup   会自动下载运行依赖,然后跑到容器隔离环境中docker-composedown--rmiall   删除由DockerCompose管理的所有容器 安装(我的版本20.10.5) 简单例子 如果遇......
  • [笔记]树形dp
    树形dp,是一种建立在树形结构上的dp,因此dfs一般是实现它的通用手段。是一种很美的动态规划呢。P1352没有上司的舞会P1352没有上司的舞会。在一棵树中,找到若干个互相独立(即互相没有边直接相连)的点,使它们的权值和最大。我们发现,间隔选择的方法(只选深度为奇数/偶数的点)是不可......
  • #交互,dp#洛谷 7998 [WFOI - 01] 猜数(guess)
    题目传送门分析首先要搞清楚,交互库的自适应会让区间长度尽可能增大(答案自适应)也就是说,如果现在区间为\([l,r]\),你选取的区间为\([l',r']\),那么交互库会让你的区间变成\([l,r'-1]\)和\([l'+1,r]\)中区间更长的那一个,不妨枚举这个长度设\(dp[i]\)表示区间长度为\(i\)......