VPS网站加速方案:CDN、缓存与线路优化
网站慢是什么原因
在折腾加速之前,先搞清楚你的网站到底慢在哪里。网站加载慢通常有三个原因:
- 网络延迟高:服务器到用户之间的物理距离太远或线路质量差
- 服务器响应慢:CPU/内存不够、数据库查询慢、PHP执行慢
- 前端资源大:图片没优化、JS/CSS太多、没有启用压缩
我的经验是,大多数海外VPS网站对国内用户慢,原因80%在网络延迟,而不是服务器性能不行。
方案一:CDN加速
CDN(内容分发网络)是最有效的加速方式。原理是把你的网站内容缓存到全球多个节点,用户访问时从最近的节点获取内容。
CloudFlare(推荐)
CloudFlare是最流行的免费CDN,接入很简单:
- 注册CloudFlare账号
- 添加你的域名
- 按提示修改域名的NS记录
- 等待DNS生效(通常几分钟到几小时)
# 修改前
NS: ns1.原来的dns服务商.com
NS: ns2.原来的dns服务商.com
# 修改后
NS: xxx.ns.cloudflare.com
NS: yyy.ns.cloudflare.com
CloudFlare加速效果
我用一个WordPress站测试的数据:
| 指标 | 无CDN | CloudFlare免费版 | 提升 |
|---|---|---|---|
| TTFB(国内) | 520ms | 280ms | 46% |
| 全页加载 | 4.2s | 1.8s | 57% |
| 图片加载 | 2.1s | 0.6s | 71% |
效果还是很明显的,特别是图片加载速度提升最大。
CloudFlare优化设置
免费版也有不少可以优化的设置:
| 设置项 | 推荐值 | 作用 |
|---|---|---|
| SSL/TLS | Full (Strict) | 全程HTTPS |
| Auto Minify | 开启JS/CSS/HTML | 压缩代码 |
| Brotli | 开启 | 更好的压缩 |
| Always Online | 开启 | 源站挂了也能访问 |
| Browser Cache TTL | 4小时 | 浏览器缓存时间 |
| Rocket Loader | 试试看 | JS异步加载(可能出bug) |
其他CDN选择
| CDN | 优点 | 缺点 | 价格 |
|---|---|---|---|
| CloudFlare | 免费、易用 | 免费版节点不在国内 | 免费-$20/月 |
| Fastly | 性能好 | 价格贵 | 按量付费 |
| BunnyCDN | 便宜 | 节点少 | $1/月起 |
方案二:服务器端缓存
CDN解决了网络层面的问题,服务器端缓存解决的是”生成页面太慢”的问题。
Redis对象缓存
WordPress最大的性能瓶颈是数据库查询。安装Redis后可以把数据库查询结果缓存到内存里:
# 安装Redis
apt install redis-server -y
# 配置Redis
systemctl enable redis-server
systemctl start redis
然后在WordPress里安装Redis Object Cache插件并启用。
效果:
| 指标 | 无Redis | 有Redis | 提升 |
|---|---|---|---|
| 数据库查询次数 | 78次 | 12次 | -85% |
| 页面生成时间 | 320ms | 45ms | -86% |
Nginx FastCGI缓存
如果你用的是Nginx + PHP-FPM,可以开启FastCGI缓存,直接把生成好的HTML页面缓存起来:
# nginx.conf中添加
fastcgi_cache_path /tmp/nginx-cache levels=1:2
keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
# 在server块中
location ~ \.php$ {
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_use_stale error timeout;
}
这个比Redis更激进——直接跳过PHP执行,响应时间能从几百毫秒降到几毫秒。
静态化
最极端的缓存方案是直接把WordPress生成为静态HTML文件。插件如WP Super Cache或W3 Total Cache都可以做到。
方案三:线路优化
如果你的VPS走的是普通线路到国内,除了换CN2 GIA之外还有一些优化方法。
BBR拥塞控制
BBR是Google开发的TCP拥塞控制算法,可以显著提升跨洲际的网络传输效率:
# 开启BBR(Linux内核4.9+)
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
# 验证
sysctl net.ipv4.tcp_congestion_control
# 应该输出: net.ipv4.tcp_congestion_control = bbr
BBR的效果在丢包环境下特别明显。我测试的数据:
| 场景 | 无BBR | 有BBR | 提升 |
|---|---|---|---|
| 正常网络 | 45 Mbps | 52 Mbps | +15% |
| 1%丢包 | 12 Mbps | 38 Mbps | +217% |
| 5%丢包 | 3 Mbps | 18 Mbps | +500% |
在晚高峰丢包严重的时候BBR的提升尤其大。
换更好的线路
这是最根本的解决方案,但也最贵。普通线路→CN2 GIA的体验提升是碾压级的。详细对比见CN2 GIA线路对比测试。
方案四:前端优化
图片优化
图片通常占网页体积的60-70%,优化好图片效果立竿见影:
# 安装WebP转换工具
apt install webp -y
# 将JPEG转为WebP
cwebp -q 80 input.jpg -o output.webp
| 格式 | 平均大小 | 质量 |
|---|---|---|
| JPEG | 200KB | 好 |
| WebP | 80KB | 几乎一样 |
| AVIF | 50KB | 几乎一样 |
WordPress可以用ShortPixel或Imagify插件自动优化上传的图片。
启用Gzip/Brotli压缩
# Nginx开启Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1024;
gzip_comp_level 6;
HTML/CSS/JS启用压缩后体积可以减小60-80%。
懒加载
图片懒加载可以让首屏加载更快:
<img src="image.jpg" loading="lazy" alt="描述">
现代浏览器原生支持loading="lazy"属性。
优化优先级
| 优先级 | 优化方案 | 效果 | 难度 | 成本 |
|---|---|---|---|---|
| 1 | 开启BBR | 中 | 低 | 免费 |
| 2 | 接入CloudFlare | 高 | 低 | 免费 |
| 3 | Redis缓存 | 高 | 中 | 免费 |
| 4 | 图片优化 | 中 | 低 | 免费 |
| 5 | Nginx缓存 | 高 | 中 | 免费 |
| 6 | 换CN2 GIA | 极高 | 低 | 加钱 |
建议按这个顺序来,前5个都是免费的,做完了还不满意再考虑换线路。
总结
网站加速不是单一方案能解决的,需要多管齐下。BBR + CDN + 缓存 + 图片优化的组合,通常能把加载时间缩短50-70%。如果还不够就考虑换CN2 GIA线路。
新买的VPS建议先做好安全和基础配置,参考VPS安全初始化指南,然后再开始这些加速优化。想选购合适的VPS可以看建站VPS选购指南。