CDN从零到精通:让你的网站在全球都快如闪电
内容分发网络(CDN)是提升网站加载速度最具性价比的方案。通过在全球各地的边缘节点缓存你的静态资源,用户访问时从最近的节点获取数据,延迟从数百毫秒降到几十毫秒。
1. CDN的工作原理
没有CDN时,北京的服务器在北京访问很快,但在美国纽约访问延迟可能超过300毫秒——光是数据在海底光缆上来回就需要时间。
部署CDN后,静态文件(CSS、JS、图片)会自动分发到全球各地的边缘节点。纽约用户访问时从纽约节点获取文件,延迟降到20毫秒以内。源站只处理动态请求,压力大幅降低。
2. Cloudflare免费计划——个人站长首选
Cloudflare的免费计划包含了CDN、DDoS防护、SSL证书、DNS解析等核心功能。对日均几千PV的个人博客来说完全够用。
配置步骤:
- 将域名的DNS服务器指向Cloudflare分配的地址
- 在Cloudflare仪表板确认DNS记录迁移完成
- 开启"代理"模式(橙色云朵图标),流量就会经过Cloudflare的CDN网络
关键配置项:
- 缓存级别:设置为"标准",让Cloudflare缓存CSS/JS/图片等静态文件
- 自动压缩:开启Brotli压缩,比gzip压缩率高15%
- Rocket Loader:延迟加载JS,改善页面渲染速度(但有些依赖JS的插件可能冲突)
- Always Online:源站宕机时显示Cloudflare缓存的页面快照
3. 缓存规则细化
默认的缓存规则不够精细。创建自定义Page Rules:
不缓存后台路径:
https://www.zz1984.com/admin/* → Cache Level: Bypass长时间缓存静态资源:
https://www.zz1984.com/usr/uploads/* → Cache Level: Cache Everything, Edge Cache TTL: 30 days强制HTTPS:
https://www.zz1984.com/* → Always Use HTTPS免费计划提供3条Page Rules,按优先级合理分配。
4. 源站缓存头配置
CDN的缓存行为最终由源站的HTTP响应头决定。在Nginx中优化缓存头:
# 图片文件缓存30天
location ~* \.(jpg|jpeg|png|gif|webp|svg)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# CSS/JS缓存7天
location ~* \.(css|js)$ {
expires 7d;
add_header Cache-Control "public";
}
# HTML不缓存(内容可能更新)
location ~* \.html$ {
expires -1;
add_header Cache-Control "no-cache";
}5. CDN性能测试
部署CDN后用工具验证实际效果:
- Pingdom Tools:从全球多个节点测试加载时间
- GTmetrix:分析性能瓶颈和优化建议
- WebPageTest:提供详细的水fall图,看清每个资源的加载时间线
重点关注指标:首字节时间(TTFB < 200ms)、首次内容绘制(FCP < 1.8s)、最大内容绘制(LCP < 2.5s)。
6. CDN的局限性
CDN不是万能的。动态内容(如PHP生成的页面、API响应)通常无法缓存,仍然需要优化源站性能。
缓存的副本可能滞后于源站更新。发布新文章后图片可能需要等待CDN缓存过期(或手动清除缓存)才能显示最新版本。
部分CDN节点(尤其是免费计划的节点)在某些地区可能被墙或线路质量差,需要针对性调整DNS解析策略。
即使有这些局限,对个人站长来说,部署CDN仍然是性价比最高的性能优化手段。10分钟配置换来的是全球用户的加载速度提升。