个人网站CDN加速怎么弄?Cloudflare、又拍云、七牛云我用过之后的真实体验

去年我写了一篇关于网站速度优化的文章,发出去之后,评论区好几个人问同一个问题:”你说的那些优化我都做了,但网站还是慢,是不是得上 CDN?”

当时我对 CDN 的理解就停留在”能加速”三个字上。知道它能加速,但怎么加速、加多少、用什么工具——完全没概念。

后来我自己动手折腾了一圈,从 Cloudflare 到又拍云再到七牛云,前前后后搞了快一个月。中间踩了不少坑,比如配置错了导致网站打不开、SSL 证书冲突、缓存策略没设对搞得更新了文章前台看不到。这些翻车经历,说起来都是泪。

这篇文章,我把个人网站 CDN 加速的完整折腾过程写出来。不讲大道理,只讲我实际用过的东西和踩过的坑。


先搞清楚一件事:CDN 到底在加速什么

很多人以为 CDN 是让服务器变快了。不是。

你的服务器放在北京,一个广州的用户访问你的网站,数据要从北京跨越大半个中国传到广州,路上经过十几个节点,每个节点都可能丢包、延迟。这是物理距离决定的,你优化代码、升级服务器都没用。

CDN 做的事情很简单:把你的网站文件(图片、CSS、JS、HTML)提前复制到全国甚至全球的节点上。广州的用户访问时,数据从广州最近的节点传输,不用跑到北京去取。

拿我自己的站举例。没用 CDN 之前,第一字节时间(TTFB)在 800ms 到 1.2s 之间波动。用了 Cloudflare 之后,稳定在 200ms 以内。这不是优化代码做到的,是物理距离变短了。

但 CDN 不是万能的。 如果你的网站慢是因为数据库查询太烂、PHP 代码写得跟屎一样,CDN 帮不了你。它只能加速静态资源的传输,动态内容该慢还是慢。


Cloudflare:免费、强大,但对国内用户有时候是”减速”

Cloudflare 是我第一个尝试的 CDN。原因很简单——免费,而且名气大。

注册、添加域名、改 DNS 服务器,三步操作,大概半小时搞定。然后神奇的事情发生了:网站速度确实快了,GTmetrix 的评分从 C 跳到了 A。

但用了两周之后,我发现了一个问题:

国内部分地区的用户访问反而变慢了。确切地说,是有些地区快、有些地区慢、同一个地区上午快下午慢。

后来查了资料才搞明白,Cloudflare 在中国的节点分布有限,而且免费版用的是共享 IP,有时候会被分配到距离中国比较远的节点(比如日本、新加坡)。如果用户被分配到了香港节点,速度起飞;如果分到了美国节点,那还不如不用 CDN。

而且 Cloudflare 免费版还有一些限制:不能自定义缓存规则、不支持中国节点优选、图片优化需要付费版。

不过 Cloudflare 有两个额外的好处,值得单独说:

第一个是 DDoS 防护。Cloudflare 的免费版自带基础 DDoS 防护,我有个小站曾经被人用 CC 攻击打了两天,Cloudflare 自动拦截了 90% 的请求,服务器基本没受影响。如果没有 Cloudflare 挡在前面,那台小 VPS 估计早挂了。

第二个是免费的 SSL 证书。Cloudflare 会自动给你的域名签发 SSL 证书,而且支持自动续期。你不需要在服务器上折腾 Let’s Encrypt,也不需要去买证书,全自动。

适合谁: 有海外用户的网站、需要免费 DDoS 防护的站、不想折腾 SSL 证书的人。

不适合谁: 用户 100% 在国内、对速度要求很高的站。Cloudflare 免费版在国内的速度表现不稳定,有时候快有时候慢,像抽奖。


又拍云:国内速度很稳,但免费额度给得不大方

又拍云是我折腾的第二站。选择它的原因很简单——国内节点多,而且有免费额度。

注册、实名认证(这个躲不掉,国内 CDN 都要实名)、创建服务、配置域名、改 CNAME 记录。流程比 Cloudflare 多几步,但也不算复杂。

用了一个月,最大的感受是:国内速度确实稳。

不管用户是从北京、上海、广州还是成都访问,响应时间基本都在 50ms 以内。再也没有 Cloudflare 那种”上午快下午慢”的玄学问题。之前用 Cloudflare 的时候,GTmetrix 测试偶尔会跳出几百毫秒的延迟,换了又拍云之后,不管从哪个测试节点测,TTFB 都稳稳的。

不过又拍云有几个让我不太爽的地方:

免费额度给得抠抠搜搜。每个月免费 10GB 流量 + 10GB 存储,对一个图片稍微多一点的博客来说,10GB 流量撑不了一个月。我的站每个月大概 15-20GB 流量,超过的部分按量计费,虽然不贵,但总感觉被”卡着脖子”。

HTTPS 请求单独计费。这个很多人不知道——又拍云的 HTTPS 请求是额外收费的,虽然单价很低,但如果你网站全部走 HTTPS(现在基本都这样),这部分费用会累积。我第一个月账单出来,HTTPS 请求费占了总费用的 30%。

还有一个体验问题:控制台界面有点老旧,操作逻辑不太直观。设置缓存规则的时候,找了半天才找到入口。跟 Cloudflare 那种现代界面比起来,又拍云的后台像是五年前的产物。

适合谁: 用户全部在国内、对速度稳定性要求高、预算不多的个人站长。

不适合谁: 流量很大的站(免费额度不够用)、对控制台体验有要求的人。


七牛云:存储和 CDN 一体,但配置门槛偏高

七牛云是我尝试的第三个 CDN 方案。其实七牛云主打的是对象存储,CDN 是附带的。但如果你网站有很多图片、视频、下载文件,七牛云的”存储 + CDN”一体化方案确实比单独搞 CDN 更方便。

七牛云让我觉得舒服的地方:

图片处理功能很实用。你上传一张大图,七牛云可以在 URL 后面加参数,实时裁剪、缩放、加水印、转格式。比如原图是 4000×3000 的 PNG,你加个 ?imageView2/2/w/800 参数,它就自动给你转成 800px 宽的压缩版本。这个功能对 WordPress 站长来说,比装一堆图片优化插件省事多了。

融合 CDN 加速。七牛云的 CDN 不是自己的节点,而是融合了多家 CDN 厂商的节点。理论上覆盖面更广,实际测下来,国内速度确实不错,跟又拍云差不多在同一水平。

但七牛云也有让我头疼的地方:

配置比又拍云复杂。创建存储空间、绑定域名、配置 CDN 加速、设置缓存规则、申请 HTTPS 证书——每一步都要手动操作,而且分散在不同的菜单里。我第一次配置的时候,搞了两个小时才把 HTTPS 配通。

域名管理有点坑。七牛云要求 CDN 加速域名必须备案。如果你用的是免备案的香港服务器,域名在国外注册商那边,那七牛云用不了。Cloudflare 和又拍云都没有这个限制。

免费额度比又拍云大方一些——每月 10GB 存储 + 10GB CDN 流量 + 20GB 下载流量,对个人博客来说基本够用。但如果你的网站有很多大文件,还是要花钱。

适合谁: 网站图片/视频/下载文件很多、需要图片实时处理功能的站长。

不适合谁: 域名没备案的、不想花时间研究配置的、只需要纯 CDN 不需要存储功能的人。


三款 CDN 工具实测对比,直接看表

对比维度Cloudflare 免费版又拍云七牛云
国内速度不稳定,看运气稳定,50ms 以内稳定,50ms 以内
海外速度很快一般一般
免费额度无限制(但功能受限)10GB/月10GB 存储 + 10GB 流量
DDoS 防护有(基础版)无无(需额外购买)
SSL 证书自动签发需手动上传或购买需手动配置
配置难度低中高
备案要求不需要不需要需要
图片处理付费版才有基础功能强大(实时裁剪/缩放/水印)

我现在的方案:主站又拍云 + 图片用七牛云 + 备用域名走 Cloudflare

折腾了这么久,我现在的配置是这样的:

主站 wujianzhan.com 走又拍云。 因为用户基本都在国内,又拍云的速度稳定,配置不算复杂,免费额度对我这个中型博客来说勉强够用。超出部分按量付费,一个月十几块钱,在可接受范围内。

图片和静态资源走七牛云。 我把文章里的图片全部上传到七牛云的对象存储,配合 CDN 加速和图片处理功能。这样主站服务器不用存图片,减轻了服务器压力,而且七牛云的图片实时裁剪功能确实好用。

备用域名走 Cloudflare。 我有个备用域名,偶尔有海外用户访问,走 Cloudflare 的免费 CDN。主要是利用它的全球节点和 DDoS 防护,不指望国内速度。

这个方案不是最优的,但对我来说够用了。如果你刚开始折腾个人网站 CDN 加速,我的建议是:别一上来就搞七牛云那种复杂的方案,先试试又拍云或者 Cloudflare,用起来再说。 等流量上来了、需求变复杂了,再慢慢调整。


如果你不确定自己的网站需不需要上 CDN,先花五分钟做一件事——用 PageSpeed Insights 测一下网站速度,看看”服务器响应时间”那一项。如果超过 500ms,CDN 能帮上忙。如果已经在 200ms 以内,上 CDN 也提不了多少速度,不如先把网站图片压缩和服务器配置优化好。

来自 wujianzhan.com,一个分享建站与 SEO 实战的博客。