「加了CDN之后网站反而慢了」,这种反馈我听过不下十次。CDN不是一键加速的魔法开关,配错了副作用不小。这里把最常见的六个问题整理出来。
问题一:CDN缓存了不该缓存的内容
很多默认配置会缓存所有静态文件,但有些文件不该缓存。比如:
- /wp-admin/下的任何内容(管理后台)
- /cart/、/checkout/(购物流程)
- 含session或user数据的页面
- API返回的JSON如果带用户特定数据
解决:在CDN后台设置缓存规则,以上路径设成「不缓存」。Cloudflare的话,用Page Rules设置这些URL为Bypass Cache。
问题二:缓存时间设置不合理
缓存太短:CDN频繁回源,加速效果打折扣。
缓存太长:内容更新了用户看到的还是旧的。
推荐规则:
- 纯静态文件(图片/CSS/JS/字体):缓存30天。文件名带版本号或hash,更新了自动变新URL
- HTML页面:缓存1-4小时。如果网站更新频繁,缩到1小时
- JSON API:缓存1分钟或不缓存
问题三:源站IP暴露了,CDN形同虚设
如果你的源站IP可以从DNS历史记录搜到,攻击者可以绕过CDN直接打源站。解决:
1. 换一个新IP(跟云服务商申请弹性IP)
2. 在服务器防火墙上只允许CDN的回源IP访问80/443端口
3. Cloudflare的IP范围公开在官网,可以直接配白名单
这样就算有人知道你的源站IP,也会被防火墙拦住。
问题四:HTTPS证书没在CDN端配置
CDN的HTTPS有三种模式(以Cloudflare为例):
- Flexible:用户→CDN是HTTPS,CDN→源站是HTTP。安全性差,不推荐
- Full:两端都HTTPS,但CDN不验证源站证书。中等安全
- Full (Strict):两端都HTTPS且验证证书。最安全
选Full (Strict),源站上有效的SSL证书(可以用免费Let's Encrypt)。
问题五:CDN缓存了错误页面
源站返回500错误,CDN把它缓存了——然后所有用户都看到错误页,即使源站已经恢复正常。在CDN后台设置「错误页面缓存时间」为0秒(即不缓存),或者设一个较短的过期时间比如60秒。
问题六:回源Host头配置错误
这个坑最隐蔽。CDN向源站发请求时会带一个Host头,如果这个Host头跟源站Nginx/Apache配置的server_name不匹配,源站可能返回默认站点内容或404。症状是:带CDN访问跟直接访问源站看到的内容不一样。
解决:在CDN后台找到「回源Host」或「Origin Host Header」设置,填上你的域名。
排查CDN问题的通用方法:浏览器F12→Network→看响应头里的X-Cache或CF-Cache-Status。如果是HIT说明走了缓存,MISS说明回源了。然后对比源站直接访问的响应时间和CDN访问的响应时间,判断瓶颈在CDN还是源站。
标签: CDN 网站加速 Cloudflare 技术问答
还木有评论哦,快来抢沙发吧~