前段时间,有人找到我,说公司的官网打开特别慢,客户经常等不到页面加载完成就直接关掉了。
他的第一反应是:
是不是服务器配置太低,需要升级 CPU、内存和带宽?
我打开网站首页后,很快就发现了一个更直接的问题:首屏轮播图有一张接近 12MB。
这意味着用户进入网站后,浏览器需要先下载一张体积接近普通短视频的图片,才能完整显示首页。服务器配置即使不差,页面也很难真正做到“秒开”。
很多网站速度慢,并不是单纯因为服务器性能不足,而是图片过大、页面资源过多、缓存没有设置好,或者服务器距离用户太远。

一张 12MB 的首页图,会带来什么问题?
企业官网首页通常不只有一张图片,还会同时加载:
- HTML 页面;
- CSS 样式文件;
- JavaScript 脚本;
- Logo、图标和字体;
- 统计代码;
- 在线客服;
- 广告或第三方组件。
如果单张 Banner 就有 12MB,其他资源再叠加上去,首页首次打开时可能需要下载十几兆甚至几十兆的数据。
在办公室宽带环境下,站长自己可能觉得还能接受。但客户使用手机网络、跨地区线路或海外网络访问时,加载时间就会明显增加。
更重要的是,首页大图经常是页面中最大的可见元素,也就是常见的 LCP 候选内容。图片体积过大,通常会直接拖慢主要内容显示速度。Google 的网页性能文档也将图片优化列为改善加载体验的重要方向。
网页图片并不需要使用设计原图
网站上常见的错误包括:
- 设计师导出多大,后台就上传多大;
- 相机拍摄的原始照片直接放到网页;
- 手机端和电脑端共用同一张超大图片;
- 产品照片仍使用体积很大的 PNG;
- 图片已经压缩,但像素尺寸远超实际展示尺寸。
例如,网页中只显示 1200 像素宽的图片,却上传了一张 6000 像素宽的摄影原图。浏览器最终虽然会把图片缩小显示,但用户仍然需要先下载完整原图。
正确做法不是只在 CSS 中缩小图片,而是在上传前就生成适合网页使用的尺寸。
常见图片格式怎么选?
JPEG
适合照片、产品图、人物图和渐变较多的画面。兼容性好,压缩后体积通常明显小于 PNG。
PNG
适合透明背景 Logo、图标、截图和需要保留清晰边缘的简单图形。一般不适合保存大幅摄影照片。
WebP
适合大多数网站图片,可同时支持有损压缩、无损压缩和透明背景,通常比传统 JPEG、PNG 更节省空间。
AVIF
压缩效率通常更高,适合希望进一步减少图片体积的网站,但需要保留格式兼容和图片处理流程。
WebP 和 AVIF 通常可以在维持可接受画质的同时减少文件体积。更稳妥的做法是通过 <picture> 元素提供现代格式,并保留 JPEG 或 PNG 作为兼容回退。
图片应该压缩到多大?
没有一个数字适合所有网站,但可以先建立一个实用的性能预算。
对于普通企业官网,可以参考下面的起始目标:
| 资源类型 | 建议起始目标 |
|---|---|
| 首页普通内容图 | 尽量控制在 100—300KB |
| 首屏横幅图 | 尽量控制在 300—500KB |
| 产品缩略图 | 通常控制在 50—150KB |
| Logo 和简单图标 | 尽量控制在几十 KB |
| 首页首次加载总资源 | 越精简越好,避免无意义膨胀 |
这些数字不是强制标准。
一张细节丰富的建筑照片,可能需要更高体积才能保持画质;一张背景简单的营销横幅,可能压到 150KB 仍然足够清晰。
判断标准应该是:
- 实际展示尺寸是否合适;
- 手机端是否加载了更小版本;
- 肉眼是否能看出明显损失;
- 页面性能测试是否仍提示图片过大;
- 首屏图片是否拖慢 LCP。
Google 的性能指南建议为图片、JavaScript 和页面总资源建立性能预算,避免网站在不断添加内容后逐渐变慢。
CDN 能不能解决大图片问题?
能改善,但不能代替图片优化。
CDN 的完整名称是内容分发网络。它会把适合缓存的图片、CSS、JavaScript、字体等资源存放在多个地区的节点中。
当用户访问网站时,资源可以从距离用户更近的节点返回,从而减少网络传输距离、降低源站压力。CDN 本质上是一个分布在不同地区的缓存和分发网络。
可以把它理解成快递仓库:
- 没有 CDN:商品需要从广州仓库发往北京;
- 使用 CDN:北京附近已经提前存有商品;
- 图片压缩:把原本几十公斤的货物减轻到几公斤。
CDN 解决的是“从哪里发货”,图片压缩解决的是“货物有多重”。
如果图片仍然有 12MB,即使从附近节点下载,用户仍然要接收完整的 12MB 数据。CDN 可以缩短路程,却不会自动让原文件变小。
因此正确顺序应该是:
先调整图片尺寸和格式,再压缩图片,最后使用 CDN 分发。
什么是回源?
CDN 节点不一定一开始就保存了网站资源。
当用户第一次请求某个文件时,CDN 节点如果没有缓存,通常需要向源服务器获取文件,再将文件保存到节点中,这个过程称为“回源”。
常见状态包括:
- HIT:资源已在 CDN 节点缓存,直接返回;
- MISS:节点没有缓存,需要向源站获取;
- EXPIRED:缓存已经过期,需要重新验证或获取;
- BYPASS:根据规则跳过缓存;
- DYNAMIC:资源被判断为动态内容,没有使用普通静态缓存。
不同 CDN 的状态名称可能略有区别,但判断逻辑相近。
以 Cloudflare 为例,图片、CSS 和 JavaScript 等静态资源通常可以默认缓存,而 HTML 页面默认不会直接缓存。具体是否命中,还会受到文件扩展名、查询参数、Cookie、缓存响应头和 Cache Rules 等因素影响。
什么是 CDN 预热?
预热是指在正式流量到来前,提前让 CDN 节点获取指定资源。
它适合以下场景:
- 网站刚上线;
- 大型活动即将开始;
- 一批重要图片或视频刚刚更新;
- 新版本静态文件需要提前进入缓存;
- 短时间内会有大量用户访问同一资源。
普通个人博客或访问量不高的企业网站,不需要频繁执行预热。日常更新依靠正常缓存即可。
网站慢,怎样判断问题到底在哪里?
不要一看到网站慢就直接购买更贵的服务器。可以按照下面的顺序排查。
第一步:检查页面资源大小
打开 Chrome 浏览器,按 F12 进入开发者工具:
- 打开
Network; - 刷新页面;
- 按
Size排序; - 查看最大的图片、脚本和字体;
- 检查页面总传输大小和请求数量。
重点关注:
- 是否有超过 1MB 的首页图片;
- 是否加载了没有显示的图片;
- 是否存在重复脚本;
- 是否加载了多个字体文件;
- 是否有第三方请求长时间没有响应。
第二步:检查图片实际尺寸
确认图片在页面上的显示宽度。
如果首页 Banner 最大只显示 1920 像素宽,就没有必要上传一张 6000 像素宽的原图。
同时应使用响应式图片,让浏览器根据设备宽度选择不同文件。例如:
|
|
这样手机用户不必下载桌面端使用的超大图片。
第三步:测试服务器响应时间
如果图片和静态资源已经较小,但 HTML 文档仍然很慢,需要检查:
- 服务器 TTFB 是否过高;
- PHP、Node.js 或其他程序是否执行过慢;
- 数据库查询是否过多;
- WordPress 插件是否拖慢页面;
- 第三方 API 是否超时;
- 服务器 CPU、内存和磁盘是否长期满载。
CDN 主要改善缓存资源的传输。如果首页慢在数据库或后端程序,单纯增加 CDN 不一定能解决问题。
第四步:比较不同地区的访问结果
如果本地访问快,外地或海外用户明显更慢,问题可能与物理距离、运营商线路或跨境网络有关。
此时 CDN 的价值会更加明显,因为它可以让静态资源从更靠近用户的节点返回。
但不要把某个城市之间的延迟写成固定值。真实结果会受到线路、运营商、网络拥堵、路由质量和测试时间影响,应以实际监测数据为准。
哪些网站更适合使用 CDN?
全国性企业官网
客户分布在多个省市,不同地区的网络质量难以统一。CDN 可以减少静态资源跨地区传输。
图片较多的网站
例如产品展示、案例展示、摄影、装修、服装、机械设备和设计作品网站。图片越多,静态资源分发的收益通常越明显。
电商网站和活动页面
访问高峰期间,大量用户同时加载同一批图片、脚本和样式文件。CDN 可以减少源站带宽和并发压力。
小程序和 App 静态资源
启动图片、更新包、字体、脚本和公共资源适合通过 CDN 分发。
面向海外用户的网站
如果源站与客户距离较远,使用覆盖目标市场的 CDN 或直接选择更靠近客户的服务器区域,通常比单纯升级 CPU 更有效。
哪些网站可以暂时不用 CDN?
以下情况可以先完成基础优化,再决定是否使用:
- 用户主要集中在同一办公室或同一城市;
- 网站访问量很低;
- 页面几乎没有图片和大型静态资源;
- 网站本身已经部署在靠近用户的边缘平台;
- 当前问题明显来自程序、数据库或第三方接口。
不过,即使不使用独立 CDN,也应该正确设置浏览器缓存、压缩传输和静态资源版本管理。
使用 CDN 最容易踩的五个坑
1. 图片不压缩,直接开 CDN
CDN 只能缩短文件传输路径,不能从根本上消除超大文件带来的下载成本。
2. 把 CDN 当成万能加速器
数据库慢、代码效率低、插件冲突和第三方接口超时,都不是普通静态缓存能够彻底解决的问题。
3. 开通后完全使用默认配置
至少应该检查:
- 域名是否已经正确接入;
- DNS 或 CNAME 是否生效;
- 图片、CSS、JavaScript 是否被缓存;
- 缓存时间是否合理;
- 源站缓存响应头是否正确;
- HTTPS 是否完整配置;
- 更新文件后是否能及时刷新。
4. 更新 CSS 后页面样式错乱
通常是 CDN 或浏览器仍在使用旧文件。
推荐使用文件指纹或版本号,例如:
|
|
或者:
|
|
对于带哈希值、内容变化后文件名也会变化的静态资源,可以设置更长的缓存时间。MDN 也推荐将长期不变的静态资源与缓存破坏机制结合使用。
5. HTTPS 配置不完整
如果网站已经使用 HTTPS,CDN、源站和静态资源也应保持 HTTPS。
否则可能出现:
- 混合内容警告;
- 图片或脚本加载失败;
- 浏览器安全锁消失;
- 重定向循环;
- 回源证书错误。
一个更实用的网站速度优化顺序
当网站打开很慢时,可以按照下面的优先级处理:
1. 先处理图片
- 删除没有使用的图片;
- 调整到实际展示尺寸;
- 照片避免使用原始 PNG;
- 转换为 WebP 或 AVIF;
- 为手机端提供较小尺寸;
- 压缩后再上传。
2. 再检查页面资源
- 删除无用 CSS 和 JavaScript;
- 减少第三方统计和客服组件;
- 合理延迟非关键脚本;
- 减少字体文件和字重;
- 为非首屏图片设置懒加载。
3. 检查服务器与程序
- 查看 TTFB;
- 检查慢查询;
- 排查插件;
- 查看 CPU、内存、磁盘和带宽;
- 检查第三方接口。
4. 判断是否需要 CDN
当用户分布较远、静态资源较多或访问并发较高时,再接入合适的 CDN。
5. 配置缓存和 HTTPS
确认静态资源是否真正命中缓存,而不是只完成了域名接入。
6. 优化后重新测试
不要只看自己电脑上的打开速度。应分别测试:
- 无痕窗口首次加载;
- 手机 4G 或 5G 网络;
- 不同城市或国家;
- CDN 缓存命中前后;
- 首页和内容页;
- 登录状态与未登录状态。
总结
网站速度慢,不应该第一时间就归咎于服务器配置。
一张未经处理的 12MB 首页图片,可能比升级服务器更值得优先解决。正确的优化思路应该是:
先减小资源体积,再减少无效请求;先判断慢在哪里,再决定是否升级服务器或接入 CDN。
图片优化解决的是文件太大,CDN 解决的是传输距离和源站压力,服务器优化解决的是后端响应速度。
这三件事各自解决不同的问题。
真正有效的网站加速,不是购买一个服务后期待页面自动变快,而是先通过数据找到瓶颈,再按顺序处理。