提升你的后台性能得分:从 40 分干到 90 分的实战指南

56 阅读5分钟

后台不只是“能跑就行”,后台也要有素质,有颜值,有速度。
毕竟现在都 2025 年了,谁的后台打开还要等 2 秒,那是要被用户捏爆魔丸的。

今天我们就用 Lighthouse + Chrome DevTools,把后台性能一步一步从 惨不忍睹飞起到 90+

不吹牛,只要按我下面这些步骤走,你的后台也能飞。

008ukul1gy1i15qd3picog308c08cdxn.gif


一、后台为什么要优化性能?

以前大家都觉得后台给内部用、性能无所谓。

现在不一样了:

  • H5 管理后台可能随时在线上被嵌入
  • SPA 后台页面越来越复杂
  • React / Vite / 各种 UI 库占 JS 量巨大
  • 客户会吐槽:“你这后台怎么这么卡???”
  • 公司考核看 Lighthouse 得分(别问我怎么知道)

你不优化?
别人用你的后台会想给你一耳屎:

“你这后台跑得这么慢,是怎么写出来的?”
—— 亲爱的测试小姐姐


二、性能优化的第一步:跑 Lighthouse

Chrome → Inspect → Lighthouse → Generate report

你会看到:

  • 性能(Performance)
  • 可访问性(Accessibility)
  • 最佳实践(Best Practices)
  • SEO

我们今天重点讲 性能 Performance

后台常见的“罪状”:

  • 图片太大
  • JS 太多太肥
  • CSS 未使用太多
  • 布局偏移 CLS 高
  • 阻塞渲染的 JS/CSS
  • 缓存配置差

下面我们来逐个击破。


三、常见性能瓶颈(以及如何把它们按死)

1️⃣ 图片太大(最典型,也是后台扣分王)

例如:

❌ 后台 logo.png = *** KB

后台首页还没开图,LCP 就被它拖死。

你可能以为:

“***KB 不大吧?”

兄弟,***KB 的 PNG = 性能灾难


✔ 最快的解决方法:在线压缩

推荐 Google 官方压缩工具:
👉 squoosh.app

步骤:

  1. 上传你的 logo.png

  2. 左侧选择
    Resize → 96 × 96(后台 logo 不需要超清)

  3. 右侧选择格式

    • WebP(兼容好)
    • AVIF(体积最小)
  4. 下载 logo.webp(1~8KB)

最终效果:

原图优化后
*** KB PNG1–5 KB WebP
节省 99%Lighthouse 加 10–20 分

后台性能立刻起飞。


2️⃣ 布局偏移 CLS(视觉抖动)

Lighthouse 给你报:

避免布局偏移
CLS: 0.3(友好分:0.1 以下)

通常原因:

  • 图片没写 width / height
  • 动态内容加载突然撑开布局
  • 弹窗 / 提示条 push 内容

解决方法:

给所有 img 加尺寸,或使用 aspect-ratio:

<img src="/banner.png" width="400" height="200" />

或:

img {
  aspect-ratio: 2 / 1;
}

后台 CLS 直接从 0.3 → 0.05!


3️⃣ 强制重排(Reflow)

Chrome Performance 它会提示:

Avoid forced synchronous layout

常见原因:

  • offsetWidth / getBoundingClientRect() 立即触发重排
  • 动画频繁修改 layout 属性
  • 用到了巨大的 box-shadow / blur

解决:

✔ 把动态操作改成 transform
✔ 减少不必要的 layout 查询
✔ 大阴影换成伪元素模拟(性能暴涨)


4️⃣ 网络依赖关系树(阻塞 LCP)

后台常见问题:

  • 主 JS 包超大
  • 图标库打进 bundle(例如 entire FontAwesome)
  • antd / element-plus 全量引入
  • 没分包(code splitting)

Vite 项目中尤为常见。

最佳解决方案

  • 使用按需加载的 UI 库
  • 使用 lodash-es(比 lodash 小 60%)
  • 公共组件拆分动态 import
  • 后台路由页全部懒加载

示例:

const AdminTable = lazy(() => import('./AdminTable'));

首屏 bundle 可以从 800 KB → 200 KB。


5️⃣ 高效缓存生命周期(Cache-Control)

很多后台根本没配置 CDN 缓存。

Lighthouse 会提示:

Use efficient cache policy

最佳缓存策略(后台独立部署):

Cache-Control: public, max-age=31536000, immutable

静态资源缓存一年,版本号变更自动重新拉取。
性能直接加 5~10 分。


6️⃣ 减少未使用的 JS

后台常见“罪魁祸首”:

  • lodash 全量引入
  • moment.js(2.8MB 巨无霸)
  • 图标库(几十 KB)
  • 大量无用组件引入
  • 旧 polyfills

排查未使用的js,css,查看覆盖率

DevTools 右上角三点 (⋮) ↓ More tools(更多工具) ↓ Coverage(覆盖率)

image.png

✔ 用 lodash-es + ES module tree-shaking

import debounce from "lodash-es/debounce";

一下省 80% 体积。

✔ moment 换成 dayjs


7️⃣ 减少未使用的 CSS

使用 Tailwind 的项目也可能有此问题:

  • 全局 CSS 过大
  • UI 库样式未按需加载

解决:

✔ Tailwind 开启 purge(Next/Vite 默认开)
✔ 组件样式模块化(避免全局覆盖)


8️⃣ 渲染阻塞的 JS / CSS

Lighthouse 会提示:

Render-blocking resources

解决:

✔ 所有脚本都加 defer

<script src="/admin.js" defer></script>

✔ 所有非关键 CSS lazy 加载


四、使用 Performance 面板做最终诊断

Chrome → Performance → Record

能看到:

  • LCP 元素
  • Long Task(长任务)
  • Reflow 次数
  • 图片解码耗时
  • Scripting 耗时

你可以清楚定位:

  • LCP 由图片导致?
  • 还是由 JS 导致?
  • 还是渲染阻塞?

非常直观。


五、后台常见技术栈优化建议(Vite / React)

你的后台现在如果是:

  • React + Vite
  • antd
  • lodash
  • axios

那么请立即换:

✔ lodash-es(更快、更小、支持 tree shaking)

✔ dayjs(替换 moment)

✔ antd 的 CDN 或按需加载

✔ react-query / swr 做缓存(减少请求)


六、最终 90 分性能后台 Checklist(复制即用)

优化项分数提升
图片换 WebP / AVIF+20
主包体积压缩(分包/ lodash-es)+15
使用 CDN 缓存策略+10
避免布局偏移(CLS < 0.1)+10
消除阻塞渲染的脚本+10
删除未使用 CSS/JS+10
Tailwind Purge + 按需加载 UI+5
LCP preload+5

做完这些,你后台性能得分:

从 40 分 → 90+ 分

不需要后端,不需要 DevOps,不需要 serverless
你自己一个前端就能搞定全部。

image.png

image.png


最后一句话

后台不是“能跑就行”。
后台也要飞,也要强,也要优雅,也要快。

你把后台性能调教好了——
用你后台的人都会说:

“这后台开起来比小程序还快,谁做的?牛逼!”,性能得分与后台接口关系也很大😶‍🌫️😶‍🌫️😶‍🌫️,让你的后台也做优化吧,正常来说,其实前端能做的优化并不多。