怎样优化网站的加载速度

为什么你的网站需要速度优化?

数据不会说谎

  • 加载时间超过 3 秒,53% 的用户会直接离开
  • 加载快 1 秒,转化率提升 7%
  • Google 已将页面速度作为移动搜索排名因素

如果你发现自己的网站:

  • 打开要等好几秒
  • 手机上体验卡顿
  • Google PageSpeed 分数低于 70

那么这篇文章就是为你写的。我将分享 10 个经过验证的提速方法,按优先级排序,新手也能照着做。按我的方法优化,大多数网站能在 1-2 天内把加载时间从 5 秒以上降到 1-2 秒。

网站速度的决定因素:3 个核心指标

在开始之前,先理解速度由什么决定:

  1. 请求数量:每个 CSS、JS、图片都需要单独请求。请求越多,越慢。目标:< 20 个
  2. 文件总大小:所有资源加起来多大。目标:< 2MB
  3. 传输距离:用户离服务器多远。用 CDN 可以解决

优化逻辑:减少请求数、减小文件体积、缩短传输距离。

方法一:开启 CDN 加速(10 分钟,提升 30%-50%)

CDN 是什么:Content Delivery Network(内容分发网络)。简单说,它把你的网站"复制"到全球各地的服务器节点。用户访问时,从物理位置最近的节点加载内容,速度自然快。

具体步骤

  1. 注册 CDN 服务:根据自己的网站选择国内或国外的CDN厂商并注册
  2. 添加网站:登录CDN后台添加自己的网站并配置源服务器IP
  3. 修改域名解析:在域名解析控制台将域名解析到CDN厂商提供的地址
  4. 等待生效:通常 5 分钟到 24 小时,多数情况几小时就好
  5. 开启自动压缩:CDN一般都提供HTML,JS,CSS的压缩,开启就好了
  6. 设置CDN缓存:把网站的静态内容缓存起来,例如图片视频等

验证是否成功

  • 接入之后直接可以用工具查看网站的IP,看到IP变多了就成功了,因为CDN厂商都是提供多个节点的

常见错误

  • ❌ 没等生效就测试:CDN设置生效和域名解析需要时间
  • ❌ 缓存规则冲突:如果同时用其他缓存插件,注意设置优先级
  • ❌ 网站缓存错误:不小心缓存到动态页面导致网站功能错误,只缓存静态内容即可

方法二:图片优化(最容易被忽略的坑)

问题:大多数网站 60% 的加载时间花在图片上。很多人直接上传手机/相机原图(2-3MB 一张),太浪费。

操作清单

1. 上传前压缩

  • 在线工具(免费):TinyPNG(tinypng.com)、Squoosh(squoosh.app)
  • 质量调到 80%-85%,肉眼几乎看不出差异,体积减半
  • 批量处理:一次最多 20 张,分多次即可

2. 选对格式

  • 照片类(人像、风景)→ JPG(质量 80%)
  • 图标/logo/透明图 → PNG
  • 支持浏览器的场景 → WebP(比 JPG 小 30%,浏览器支持率已超 98%)

3. 响应式图片

  • 别用一张大图在所有设备显示,用 srcset 指定不同尺寸
  • WordPress 主题通常自带,静态站可手写:
<img src="img-800.jpg"
     srcset="img-400.jpg 400w, img-800.jpg 800w, img-1200.jpg 1200w"
     sizes="(max-width: 600px) 400px, 800px"
     alt="描述文字">

4. 懒加载

  • 首屏外的图片,等滚动到屏幕再加载
  • HTML 原生支持:<img src="..." loading="lazy">
  • WordPress 可用 a3 Lazy Load(免费)或 WP Rocket(付费)

效果:将首页 2.8MB 图片压缩到 800KB,加载时间直接从 3.8 秒降到 2.5 秒。

方法三:开启 Gzip/Brotli 压缩(5 分钟)

原理:服务器把文本文件(HTML、CSS、JS)先"打包"压缩再发给浏览器,体积减少 70%-90%。

如何开启

宝塔面板

  1. 进入网站设置 → 软件管理 → Nginx 配置
  2. 搜索 gzip,确保以下配置存在且为 on
gzip on;
gzip_min_length 1k;
gzip_comp_level 5;
gzip_types text/plain application/javascript text/css application/xml text/javascript;
  1. 保存并重载 Nginx

虚拟主机:联系客服,说"请帮我开启 Gzip 压缩"。

WordPress:安装缓存插件(如 W3 Total Cache),在"浏览器缓存"或"高级"设置里开启 Gzip。

Brotli:更新的算法,比 Gzip 再小 15%-20%,但需要服务器支持(Nginx 1.9.5+)。Cloudflare 自动提供 Brotli。

方法四:合并 CSS/JS 文件(10 分钟)

问题:每个 CSS、JS 文件都要单独发起 HTTP 请求。首页有 50 个文件等于请求 50 次,太慢。

怎么做

  • 把多个 CSS 合并成 1-2 个(如 all.css
  • 把多个 JS 合并成 1-2 个(如 main.js
  • 合并后单个文件别超过 100KB,否则反而慢

方法

  • WordPress:W3 Total Cache、WP Super Cache 等缓存插件可以自动合并
  • 静态网站:用在线工具合并(cssmerge.com、jscompress.com)
  • 构建工具:如果用 Webpack/Gulp,配置合并即可

注意:合并后记得更新 HTML 中的引用路径,或让插件自动处理。

效果:我首页请求数从 48 个降到 12 个,GTmetrix 分数从 58 升到 72。

方法五:配置浏览器缓存(15 分钟)

原理:第一次访问后,把图片/CSS/JS 缓存到用户电脑。第二次访问时直接从本地加载,"秒开"。

缓存策略

  • 图片/CSS/JS:缓存 1 年(因为它们很少变)
  • HTML:缓存 1 小时(内容可能更新)

配置方法

Nginx(云服务器):

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
  expires 1y;
  add_header Cache-Control "public, immutable";
}
location ~* \.html$ {
  expires 1h;
  add_header Cache-Control "public, must-revalidate";
}

宝塔:网站设置 → Nginx 配置文件 → 在 server 块末尾添加上面的代码。

Apache:在 .htaccess 文件中添加:

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpg "access plus 1 year"
  ExpiresByType text/css "access plus 1 year"
  ExpiresByType application/javascript "access plus 1 year"
  ExpiresByType text/html "access plus 1 hour"
</IfModule>

WordPress:缓存插件(W3 Total Cache、WP Super Cache)中有"浏览器缓存"设置,按选项勾选即可。

验证:F12 → Network → 看静态资源的 Response Headers 是否有 Cache-Control: public, immutable 和 Expires 日期。

方法六:清理不用的插件与功能(10 分钟)

问题:很多网站装了二三十个插件,每个都加载自己的 JS/CSS,即使你不用也会加载。

操作清单

  1. 登录 WordPress 后台 → 插件 → 停用/删除半年内没用过的
  2. 主题设置里关掉"社交分享"、"相关文章"、"点赞"等不需要的模块
  3. Asset CleanUp 插件:控制每个页面只加载必要的 CSS/JS
  4. 检查主题是否自带臃肿的功能(如页面构建器),换成轻量主题

效果:我清理掉 12 个闲置插件,请求数从 12 个降到 8 个,加载时间再降 0.3 秒。

注意:删插件前先备份数据库,以防万一。

方法七:数据库优化(动态网站适用)

适用:WordPress、Typecho、Discuz 等动态程序。

常见问题

  • 文章修订版堆积(WordPress 每保存一次就存一个 revision)
  • 垃圾评论、过期 transient
  • 数据库表碎片化

操作步骤(以 WordPress 为例):

1. 一键清理(推荐)

  • 安装 WP-Optimize 插件
  • 运行"Optimize"和"Clean-up"操作
  • 可设置定期自动优化

2. 手动清理

-- 删除所有文章修订版
DELETE FROM wp_posts WHERE post_type = 'revision';
-- 删除垃圾评论
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- 清理过期 transient
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_expires < UNIX_TIMESTAMP();

3. 优化表

  • phpMyAdmin → 选中所有表 → "Optimize table"
  • 或命令行:mysqlcheck -o -u root -p your_database

4. 加索引

  • 慢查询日志找出慢的 SQL
  • 对 WHEREJOINORDER BY 涉及的字段加索引

效果:数据库瘦身 30%-50%,查询速度提升明显,尤其文章多的站。

方法八:字体优化(5 分钟)

问题:自定义字体文件大(几百 KB),会阻塞页面渲染,导致白屏。

最佳方案:用系统字体

系统字体不需要下载,0 KB 加载时间,且在各操作系统下显示清晰:

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

这套字体栈覆盖了:

  • macOS:-apple-system、BlinkMacSystemFont(San Francisco)
  • Windows:Segoe UI
  • 其他:Roboto、Helvetica、Arial

必须用自定义字体时

  • 只加载需要的字符(字体子集化,用 Font Squirrel Generator)
  • 加 font-display: swap 避免白屏等待:
@font-face {
  font-family: 'MyFont';
  src: url('myfont.woff2') format('woff2');
  font-display: swap;
}

方法九:图片懒加载(10 分钟)

原理:非首屏的图片,等用户滚动到它们的位置再加载。首屏只需要加载可见区域的图片,大幅减少初始请求数和文件大小。

怎么做

1. HTML 原生懒加载(现代浏览器)

<img src="placeholder.jpg" data-src="real.jpg" loading="lazy" alt="...">

或直接:

<img src="real.jpg" loading="lazy" alt="...">

2. WordPress 插件

  • 免费:a3 Lazy Load、Lazy Load by WP Rocket
  • 付费:WP Rocket(功能全面)

3. JavaScript 库

  • lazysizes(推荐,支持响应式图片、背景图)
  • 引入后给需要懒加载的元素加 data-src 和 lazyload 类

注意

  • 首屏图片不要懒加载,否则 LCP(最大内容绘制)指标会变差
  • 预留图片容器尺寸,避免布局偏移(CLS 指标)

效果:首页请求数可减少 30%-50%,首屏加载显著加快。

方法十:移动端专项优化(15 分钟)

移动端访问占比超 70%,但速度往往更慢(4G/5G 延迟高)。

关键优化点

1. 响应式图片确保小屏加载小图

<img srcset="small.jpg 480w, medium.jpg 768w, large.jpg 1200w"
     sizes="(max-width: 600px) 480px, 768px"
     src="fallback.jpg" alt="...">

2. 触控友好

  • 按钮/链接至少 44×44 像素
  • 间距足够(防止误触)
  • 避免 hover 效果(手机没鼠标)

3. 减少重定向

  • 手机站不要跳转到 m. 子域名(用响应式设计代替)
  • 如果必须跳转,确保是 301 且只有一次

4. 简化首屏

  • 减少首屏元素数量
  • 隐藏非必要模块(侧边栏、大轮播图)
  • 字体大小适宜(16px 以上)

测试:Chrome DevTools → Toggle Device Toolbar → 选手机型号 → 刷新测试。也可用 WebPageTest 选 3G/4G 网络模拟。

优化清单:发布前必须检查的 15 项

✅ 基础设置

  • HTTPS 证书安装,全站无 Mixed Content 警告
  • robots.txt 没有 Disallow: /
  • sitemap.xml 已生成并提交到搜索引擎

✅ SEO 基础

  • 所有页面都有独立的 title(50-60 字符)
  • 所有页面都有 meta description(150-160 字符)
  • 图片都有 alt 描述(含关键词)
  • 重要页面有内部链接(站内互链)

✅ 速度优化

  • CDN 已开启,SSL 模式为 Full/Full Strict
  • 所有图片已压缩(80% 质量),优先 WebP
  • Gzip 压缩已开启(检查响应头有 content-encoding: gzip
  • 请求数 < 20,总文件大小 < 2MB
  • 浏览器缓存已配置(静态资源 1 年)
  • CSS/JS 已合并(请求数明显减少)
  • 未使用的插件/功能已清理
  • 图片懒加载已实现(非首屏)

✅ 移动端

  • 手机访问布局正常,无横向滚动
  • 按钮/链接可轻松点击(≥44px)
  • 移动端加载时间 < 3 秒

✅ 测试

  • PageSpeed Insights 分数 > 85
  • GTmetrix 加载时间 < 2.5 秒

常见问题(FAQ)

Q:网站速度优化要多久?

A:基础优化(CDN+图片+Gzip+合并)1-2 小时就能看到明显效果。深度优化(缓存+数据库+字体)根据网站复杂度 1-3 天。

Q:CDN 会不会影响 SEO?

A:不会。Google 官方推荐使用 CDN,只要正确配置 SSL 和缓存规则,反而有利于提升排名(速度变快 + 稳定性提高)。

Q:WordPress 速度慢怎么优化?

A:优先做这 4 件事:① 装缓存插件(W3 Total Cache 免费)② 压缩所有图片 ③ 清理不用的插件 ④ 开 CDN。这四步做完,90% 的 WordPress 站点速度会有质的提升。

Q:开启缓存后内容不更新怎么办?

A:这是正常现象。更新内容后:

  1. 清浏览器缓存(Ctrl+Shift+R 强制刷新)
  2. 在 CDN 控制台点"清除缓存"(Purge Cache)
  3. 给静态资源加版本号:style.css?v=2

Q:优化后 Google 排名立刻提升吗?

A:不一定。速度是排名因素之一,但不是唯一。速度优化后,用户停留时间、跳出率会改善,间接帮助排名。短期可能没变化,但长期(1-3 个月)会有积极影响。

Q:图片压缩后变模糊了怎么办?

A:质量设太高或太低都会影响。建议:

  • JPG 质量 80%-85%(肉眼难辨差异)
  • 重要图片(产品图、头像)不要压缩太狠
  • 用 WebP 格式(相同质量下体积更小)

Q:免费 CDN 和付费的差别大吗?

A:对大多数个人/中小企业网站,免费 CDN(如 Cloudflare,EdgeOne)完全够用。付费主要差别在:更多节点、更快的技术支持、高级安全功能。如果流量特别大(日 PV > 100 万)再考虑付费。

免费工具推荐汇总

用途工具平台费用
速度测试PageSpeed Insights在线免费
速度测试GTmetrix在线免费
多地点测试WebPageTest在线免费
图片压缩TinyPNG / Squoosh在线免费
代码合并cssmerge.com / jscompress.com在线免费
CDNCloudflare云端免费
缓存插件W3 Total Cache / WP Super CacheWordPress免费
数据库优化WP-OptimizeWordPress免费
图片懒加载a3 Lazy LoadWordPress免费
字体子集化Font Squirrel Generator在线免费

总结:按优先级排序的执行清单

第一梯队(今天做,效果最明显)

  1. 开启 CDN(10 分钟)
  2. 压缩所有图片,转 WebP(1 小时)
  3. 开启 Gzip 压缩(5 分钟)
  4. 合并 CSS/JS,减少请求到 15 个以内(10 分钟)

第二梯队(本周做,继续提升)
5. 配置浏览器缓存(15 分钟)
6. 清理不用的插件/功能(10 分钟)
7. 数据库优化(20 分钟)
8. 改用系统字体(5 分钟)

第三梯队(下周做,精细打磨)
9. 实现图片懒加载(非首屏)
10. 移动端专项测试与优化

按这个清单执行,90% 的网站能从 5 秒以上降到 2-3 秒,继续做完第二梯队,基本都能进 1-2 秒。

速度优化不是一次性的,需要定期维护(每月测一次速,及时压缩新上传的图片)。但前面 80% 的效果只需要 20% 的努力,今天就开始吧。

This article was updated on 三月 22, 2026