跳到主内容
帖子

网站访问速度优化:从排查到分类的实操指南

摘要

测出慢在哪,再按图片、缓存、插件、CDN、服务器的顺序处理;每一步给出具体操作和判断标准。

网站访问速度优化:从排查到分类的实操指南

网站慢,很多人第一反应是服务器不行。说实话,大多数站还没到那一步。更常见的是图片没压、缓存没开,插件和主题又堆得太多。按这个顺序查,一次只改一个地方。

1. 测速

打开 Edge 浏览器,按键盘上的 F12,点 Lighthouse,选 Mobile,点 Analyze page load。等它跑完,记下四个数:

工具里的名字中文意思正常范围
LCP首屏主要内容出现2.5 秒内
INP点击后多久有反应0.2 秒内
CLS页面有没有跳动0.1 以内
TTFB服务器多久开始回话0.8 秒内

不用背缩写,看到红色或黄色就知道那一项要处理。

Core Web Vitals 三档阈值

LCP、INP、CLS 的绿、黄、红区间,先看颜色,不用背数字。

测完把首页、文章页、登录后的页面各测一次,手机 4G 下再测一次。办公室里 WiFi 快,不代表用户手机快。

一次访问的六个阶段

一次访问从连接、首字节、下载到交互,耗时最长的那一段才是下手处。

2. 处理图片

别急着打开压缩工具。图片在页面上只显示 800px 宽,文件却是 3000px,压得再狠也白搭。

我一般按页面显示宽度的 2 倍准备:博客配图 1200–1600px,全屏大图 1920px 左右。一张 3000px 的图,压到 500KB,还是比 1200px 的 150KB 大。

处理起来不复杂:

  1. 打开智图,上传图片。
  2. 宽度填 1600(全屏图填 1920),格式选 WebP,点压缩/转换。
  3. 下载 WebP,传到网站后台的媒体库。
  4. 在文章里重新插入这张图,替换原来那张大图。

用压缩图也行,上传后选“压缩”或“转 WebP”。图片多、要批量处理,用Caesium Image Compressor,一次拖几十张进去,输出格式选 WebP。

上传后检查两件事:

  • 首屏那张大图,关掉“延迟加载/懒加载”。WordPress 用 LiteSpeed Cache 的话,在“图片优化 → 懒加载”里把首屏图 URL 填进排除列表;用 WP Rocket 的话,在“媒体 → 懒加载”里排除首屏图。
  • 图片要有宽高。WordPress 在文章里插入图片时会自动写宽高;主题首页的大图,在“外观 → 自定义 → 首页设置/Header”里重新上传,通常会自动带尺寸。

WordPress 还可以装 ShortPixel、Imagify 或 Smush 自动压图。装一个就够,别三个一起装。

Halo 和 Typecho 在后台上传附件,主题设置里换首屏图;图片本身用上面的工具压好再传。

3. 设置缓存

缓存这事,说白了就是把做好的网页存一份,下个访客来了直接拿走。

WordPress 后台这样设置:

  1. 后台 → 插件 → 安装插件,搜索 LiteSpeed Cache。
  2. 点“安装”,再点“启用”。
  3. 左侧菜单点 LiteSpeed Cache → 缓存。
  4. 把“页面缓存”打开。
  5. 找到“排除 URI”或“不缓存 URI”,把这些一行一个填进去:
    • /wp-admin/
    • wp-login.php
    • /cart/
    • /checkout/
    • /my-account/
  6. 点“工具箱 → 清除全部”,清一次缓存。

装 WP Super Cache 也可以:后台 → 插件 → 安装 → 启用 → 设置 → 开启缓存 → 在“不缓存”里填同样的路径。两个缓存插件只能留一个。

Typecho:后台 → 控制台 → 插件,启用 TpCache。没有这个插件,上传插件包再启用。

3.1 缓存插件改了什么

插件会自动发这些缓存头,不需要你手写:

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

这行的意思是:图片、CSS、JS 可以存一年,文件名变了才换。插件会给这些文件加版本号或 hash,hash 就是文件名里那串随机字符。

Cache-Control: public, max-age=0, s-maxage=60, stale-while-revalidate=86400

这行的意思是:网页每次先问服务器有没有新版,CDN 可以存 60 秒,过期后先用旧版顶一天。

打开插件,确认这几项:

  1. 图片、CSS、JS 可以长期缓存。
  2. 网页不要存一年。
  3. 登录页、购物车、结算页、后台不缓存。

3.2 怎么确认缓存生效

用无痕窗口打开网站两次。第二次明显变快,通常就是生效了。

想看得更准:按 F12 → Network → 刷新页面 → 点图片请求 → 看 Response Headers 里的 x-cache 或 cf-cache-status。

  • HIT:命中了,CDN 直接返回。
  • MISS:没命中,回源站拿。
  • DYNAMIC:这个请求没走缓存,HTML 或接口常见。
  • EXPIRED:缓存过期,正在重新取。

图片、CSS、JS 出现 HIT 就对了。图片一直是 MISS,检查 CDN 的缓存规则有没有包含 jpg、png、webp、css、js 这些后缀,路径有没有写错。

缓存层级

缓存层级从上到下是:浏览器 → CDN → 页面缓存 → 对象缓存 → 数据库。越靠上命中,用户等得越短。

你实际要做的只有前两层:装缓存插件、开页面缓存;上了 CDN 再配 CDN 缓存。对象缓存需要 Redis,主机支持就开;没有 Redis,页面缓存也够用。

4. 清理插件和主题

后台 → 插件,把插件列出来,标成“在用、不用、不确定”。备份之后,一次停一个,刷新首页、文章页、后台,看有没有变快。

不用的直接删,不要只停用。同类插件只留一个:缓存一个、SEO 一个、图片优化一个。

主题也一样。带粒子、音乐、欢迎语、外部字体的主题,通常比轻量主题慢。换主题前备份,换完测菜单、表单、轮播和支付。

5. 使用 CDN

CDN 是把图片、CSS、JS 复制到各地机房。北京用户从北京拿,伦敦用户从伦敦拿,不用每次都回源站。回源就是 CDN 没存到,回你真正的服务器拿。

压图、开缓存,再上 CDN。一个 3MB 的首页,放到 CDN 还是 3MB。

以阿里云 CDN 为例:

  1. 登录阿里云控制台,搜索“CDN”,点“域名管理 → 添加域名”。
  2. 加速域名填 cdn.你的域名.com 或 www.你的域名.com。
  3. 业务类型选“图片小文件”。
  4. 源站填你的服务器 IP 或源站域名。
  5. 提交后,复制页面上的 CNAME 地址。
  6. 打开域名解析控制台,添加一条 CNAME 记录:主机记录填 cdn 或 www,记录值粘贴刚才的 CNAME。
  7. 回到 CDN 控制台,等状态变成“正常”。
  8. 在“HTTPS 配置”里上传证书,或申请免费证书,开启 HTTPS。
  9. 在“缓存配置”里加规则:jpg,png,webp,css,js 缓存 30 天;html 缓存 60 秒;/wp-admin/、/cart/、/checkout/、/my-account/ 不缓存。

腾讯云 CDN 的步骤类似:控制台 → CDN → 域名管理 → 添加域名 → 填加速域名、源站、业务类型 → 提交 → 按提示配 CNAME 和 HTTPS。

CNAME 就是告诉你的域名:以后访问网站先找 CDN,不要直接找服务器。HTTPS 是浏览器地址栏那把锁,证书过期会报警。

配完检查三个地方:网站能正常打开、HTTPS 没报错、登录和购物车正常。

6. 检查服务器

如果主要内容出现慢、服务器回话慢,开缓存;缓存开了还慢,再查服务器。

在电脑终端运行这条命令,把 你的域名 换成自己的:

curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://你的域名/

多跑几次,TTFB 经常超过 1 秒,再往下查。

登录主机面板,看 CPU、内存、磁盘有没有长期接近 100%。再看数据库:

  • 宝塔面板:数据库 → 管理 → phpMyAdmin → SQL,执行 SHOW PROCESSLIST;,看 Time 很长的查询。
  • 宝塔面板:软件商店 → Nginx → 配置修改,确认 gzip on; 已开。
  • WordPress 装 Query Monitor:后台 → 插件 → 安装 → 启用,刷新页面,看“查询”里哪条 SQL 最慢。

慢查询多,给常用字段加索引;不会加索引,把慢 SQL 复制出来,在 phpMyAdmin 里点“解释”,看 rows 是不是很大。rows 很大,通常是缺索引或一次查太多。

服务器配置不够再升级。别一上来就换最贵的服务器,很多问题只是缓存没开、图片太大、插件太多。

7. 不同网站的做法

六类站点的优化重点

六类站点的瓶颈不同,先对号入座,再决定先动哪里。

博客和 CMS:图片压下来、缓存开着、不用的插件删掉。WordPress 只留一个缓存插件;Halo 后台 → 外观 → 主题 → 主题设置,关掉粒子、音乐、外部字体,再停不用的插件;Typecho 在主机面板的 PHP 设置里把版本切到 8.0 以上,再开 TpCache、处理评论头像。

企业官网:首屏图压到 200KB,视频用封面图,轮播留一到两张,在线客服和地图点击后再加载。表单、后台、登录路径不缓存。

电商:商品图压下来,列表用缩略图,详情首图不懒加载。购物车、结算、账户不缓存;结算页只留支付和风控脚本;营销像素能关就关。

内容站:图片和广告是大头。广告位留好高度,别加载后把正文挤下去;热点文章开缓存;评论区、相关推荐延迟加载。

SaaS/后台:登录后的页面不能整页缓存。首屏只加载当前页的 JS,图表、编辑器按需加载;接口慢就查数据库和缓存。

文档和社区:文档站可以整站静态化;社区分游客和登录用户,游客页可以缓存,登录后的消息、设置不能缓存。头像换成本地或代理缓存。

8. 验证效果

改之前记下同一个页面、同一台手机、同一个网络的打开时间。改完清缓存,用无痕窗口再打开一次。

优化前后加载瀑布

同一类页面优化前后的瀑布:主图提前、JS 延后、第三方脚本不再挡首屏。

一次只改一个地方。不要一次装三个插件、换主题、又上 CDN,结果不知道哪个起了作用。

手机 4G 下再测一遍。登录、购物车、支付、评论各走一遍,确认没被优化弄坏。

9. 从哪下手

优化优先级

优先级放在一张图里:先做高影响、低成本的事。

图片和缓存最值得动:首屏图压到 200KB 左右,换成 WebP;缓存只留一个插件,打开页面缓存,把登录、购物车、结算和后台排除。不用的插件停掉,在线客服、统计、地图改成点击后再加载。做完这些,用手机打开看看首屏要几秒。

10. 小结

网站提速不是把每个技巧都做一遍。大多数站点,把图片压小、缓存开对、插件删减,就能快一大截。

按上面的顺序做,一次只改一个地方;改完用手机打开看看,确认登录、购物车、支付都没坏。

· 1 次查看
豫ICP备20014910号-7