网站打开慢,除了服务器本身性能,还有一个很常见的原因:用户离服务器太远,网络链路绕了一大圈。CDN(内容分发网络)的原理就是把你网站的内容缓存到离用户最近的节点上,用户访问时直接从就近节点取数据,速度和稳定性都会明显提升。这篇文章讲清楚个人网站怎么接入 CDN:哪些站适合、免费方案怎么选、缓存规则怎么配、有哪些坑要避开。
一、先搞清楚 CDN 到底干了什么
没有 CDN 时,用户访问流程是:用户 → 你的服务器。有 CDN 后变成:用户 → 就近的 CDN 节点 →(节点没缓存时)回源到你的服务器 → 缓存下来,下次同区域用户直接命中节点。所以 CDN 有两个核心收益:一是缩短网络链路(就近访问),二是分担源站压力(缓存命中后源站根本不收到请求)。
对个人网站来说,收益最明显的是这两类场景:服务器在海外但读者在国内(或反过来),以及网站图片、CSS、JS 等静态资源多。纯 API 型、实时性要求极高的站点,CDN 收益有限,甚至要谨慎用。
二、免费 CDN 方案怎么选
个人站长预算有限,免费方案完全够用,主流的有这几个:
- Cloudflare:国际最主流的免费 CDN,套餐免费额度大,自带免费 SSL、防 DDoS,海外加速效果极好,缺点是国内访问速度一般,且国内节点少;
- 腾讯云 CDN、阿里云 CDN:都有免费流量额度,国内节点多、速度快,但要求域名已备案;
- 又拍云:有面向个人站长的免费/低价套餐,国内节点质量不错,部分要求放置公益广告或按量计费;
- 百度云加速:老牌免费 CDN,对百度系收录有一定加成,但免费版功能有限。
选择建议:读者主要在海外就用 Cloudflare;读者在国内且域名已备案,用腾讯云或阿里云 CDN 的免费额度;域名还没备案,就考虑香港节点方案或 Cloudflare 兜底。
三、接入步骤
以 Cloudflare 为例(其他家流程类似):
- 注册账号,添加你的域名,它会让你把域名的 NS 记录改成 Cloudflare 的,等解析生效;
- 在 SSL/TLS 设置里选择加密模式(建议 Full 或 Full (strict),前提是源站已配置 HTTPS 证书);
- 在缓存设置里配置缓存规则(见下一节);
- 开启各项代理(橙色云朵)后,全站流量就走 CDN 了。
用国内 CDN 的话流程更简单:在控制台添加加速域名,做一条 CNAME 解析指向 CDN 分配的地址,然后配置回源地址(源站 IP 或域名)和回源协议即可。
四、缓存规则配置(最重要的一步)
缓存配不好,要么缓存了不该缓存的动态页面导致后台进不去、评论不更新,要么什么都没缓存导致 CDN 形同虚设。个人博客建议这样配:
- 静态资源(图片、CSS、JS、字体):缓存时间设长,比如 30 天,这些文件基本不变,是缓存收益最大的部分;
- HTML 页面:可以缓存但时间要短(几分钟到几十分钟),或者只缓存首页等少数页面,避免文章更新后读者看到的还是旧内容;
- 后台路径、登录接口、评论提交接口:必须排除,不缓存;
- 开启「浏览器缓存」和「自动优化」里的图片格式转换(如 WebP),进一步减体积。
以 WordPress 为例,缓存规则上要特别注意 wp-admin、wp-login.php、wp-cron.php 这些动态路径。用缓存插件(如 WP Super Cache、LiteSpeed Cache)配合 CDN 时,注意别让两层缓存打架,通常让插件管 HTML 缓存、CDN 管静态资源即可。
举个具体的配置例子:一个以文章为主的博客,可以这样设置缓存规则——图片、CSS、JS 等静态资源缓存 30 天;首页和文章页缓存 10 分钟,既保证大部分访客命中缓存,又不会让新文章长时间不可见;后台管理路径、搜索页、评论接口一律不缓存;移动端和 PC 端共用同一套缓存。这样配置下来,静态资源命中率通常能到 90% 以上,HTML 命中率也有七八成,源站压力会小非常多。
五、避坑指南
接入 CDN 的过程中,下面这几个坑几乎是人人都会踩的:
- 后台进不去/登录后跳回登录页:典型的 HTML 被缓存或 Cookie 处理问题,把后台路径加入不缓存名单,必要时在 CDN 配置里放行 Cookie;
- 文章更新了,首页还是旧的:HTML 缓存时间太长,或者 CDN 的缓存刷新没生效,更新文章后手动刷新缓存或调短 HTML 缓存时间;
- HTTPS 报错:源站证书过期或 CDN 与源站协议不匹配(CDN 走 HTTPS 回源、源站只有 HTTP 之类),统一配成 Full 模式并保证源站证书有效;
- 真实 IP 泄露:CDN 一般会通过 X-Forwarded-For 传递真实 IP,如果日志里看不到或出现攻击者直连源站 IP 的情况,说明源站 IP 暴露了,注意别在解析记录里直接暴露源站 IP,并限制源站只允许 CDN 回源 IP 访问;
- 备案问题:域名用国内 CDN 必须备案,没备案用国内 CDN 会被拦截;
- 上了 CDN 后 Ping 不通:正常现象,CDN 节点不接受 ICMP 或做了限制,用 HTTP 访问测试为准。
除了上面这些配置上的坑,接入 CDN 后源站这边还要做几件配合工作:一是放行 CDN 节点的回源 IP,别让防火墙把回源请求拦了,大多数 CDN 厂商会公布回源 IP 段,按官方文档配置即可;二是在源站程序里正确读取真实用户 IP,CDN 会把用户真实 IP 放在 X-Forwarded-For 请求头里,Nginx 需要配置 realip 模块信任 CDN 回源地址,否则日志里全是 CDN 节点 IP,影响统计和安全分析;三是静态资源较多的站点建议开启防盗链,防止图片被别的站直接引用白白消耗流量。
六、怎么验证加速效果
接入完成后,用这几个方法验证是否生效:
curl -I 你的域名,看响应头里有没有 CDN 厂商的标志(如 Cloudflare 的cf-ray、腾讯云的X-Cache);- 连续访问两次同一资源,第二次响应头里
X-Cache: HIT说明命中缓存; - 用站长工具或在线测速对比接入前后各地区、各运营商的打开时间,重点关注首屏时间和 TTFB;
- 监控源站日志,看回源请求是否明显减少。
CDN 是个人网站性价比最高的加速手段之一,配置得当能把国内外的访问体验都拉上一个台阶。接入之后别忘了持续观察缓存命中率和回源流量,定期调整规则,让配置始终贴合网站的实际情况。
七、常见问题解答
把接入过程中问得最多的问题汇总一下:
- CDN 缓存和网站自带的缓存插件会冲突吗?一般不会,但要分工明确:HTML 交给缓存插件管,静态资源交给 CDN 管,两边都配同一类资源反而容易出现缓存不刷新的问题;
- 动态页面能缓存吗?可以,但要控制时间,比如文章页缓存几分钟,评论数、浏览量这类实时数据可以改成异步加载,或者把涉及用户登录的页面排除掉;
- 用了 CDN 之后 IP 被封怎么办?CDN 节点 IP 是共享的,个别节点被攻击或封禁时服务商会自动切换,无需干预,除非是域名被墙这类极端情况才需要考虑换方案;
- CDN 流量超了会怎样?免费额度用完后一般按量计费,记得在控制台设置流量阈值告警,防止异常流量带来意外账单;
- 源站服务器可以不关防火墙吗?可以,但必须只放行 CDN 回源 IP,否则攻击者绕过 CDN 直连源站,CDN 就白接了。
把 CDN 用好的关键就一句话:静态资源大胆缓存,动态内容谨慎缓存,源站只对 CDN 开放。掌握这个原则,加速效果和稳定性都能兼顾。