参照官方手册结构整理(数据截至 2026-10,配额/价格以官方最新页面为准)。技术术语保留英文原词。
1. 概述
Cloudflare CDN 把高频访问的内容(图片、视频、网页等)缓存到离用户更近的全球边缘数据中心,降低源站负载、提升访问速度。配合 Workers 的 Cache API,你可以在 Worker 代码里直接读写边缘缓存。
一句话定位:全球边缘缓存层,默认不收数据出网费。
所有套餐均可用。
2. 核心概念
- 默认缓存行为:Cloudflare 按源站
Cache-Control/Expires头决定缓存,并默认缓存一批静态扩展名。 - Edge TTL:无缓存头时,按状态码给默认边缘缓存时长。
- Request collapsing(请求合并 / Cache lock):同一边缘节点对同一未缓存资源并发请求,只回源一次,其余等待复用。
- Cache Rules:按 URL/条件自定义哪些资源缓存、缓存多久。
- Tiered Cache(分层缓存):在多地缓存热点内容,进一步降低源站流量。
- Cache Reserve:用 Cloudflare 持久存储延长缓存时间。
- Purge(清除):即时清除指定或全量缓存。
- Cache API(Workers):
caches.default在代码里读写缓存。
3. 架构与工作原理
用户请求抵达最近边缘节点 → 命中缓存则直接返回(HIT)→ 未命中(MISS)则回源抓取并缓存(受 cache lock 保护只回源一次)→ 后续请求命中。Worker 可在请求/响应阶段用 Cache API 主动 put / match / delete 自定义缓存。
4. 快速开始(Cache API)
在 Worker 里读取/写入边缘缓存:
export default {
async fetch(req, env) {
const cache = caches.default;
let res = await cache.match(req);
if (res) return res; // HIT
res = await fetch(req); // MISS → 回源
const url = new URL(req.url);
if (res.ok && url.pathname.startsWith("/static/")) {
const h = new Headers(res.headers);
h.set("Cache-Control", "public, max-age=3600");
res = new Response(res.body, { ...res, headers: h });
await cache.put(req, res.clone());
}
return res;
},
} satisfies ExportedHandler;
CDN 侧的缓存策略通常通过 Cache Rules(Dashboard 或 API)配置,无需代码。
5. 配额与限制
| 限制项 | Free / Pro | Business | Enterprise |
|---|---|---|---|
| 最大上传大小 | 100 MB | 200 MB | 最高 5 GB |
| 单文件可缓存大小 | 512 MB | 512 MB | 5 GB(默认) |
- 默认缓存的文件扩展名:7Z、AVI、AVIF、APK、BMP、BIN、BZ2、CLASS、CSS、CSV、DOC、DOCX、EJS、EPS、EXE、EOT、FLAC、GIF、GZ、ICO、ISO、JAR、JPG/JPEG、JS、MID/MIDI、MKV、MP3、MP4、OGG、OTF、PDF、PICT、PNG、PPT/PPTX、PS、RAR、SVG/SVGZ、SWF、TAR、TIF/TIFF、TTF、WEBM、WEBP、WOFF/WOFF2、XLS/XLSX、ZIP、ZST 等。
- 默认不缓存 HTML 与 JSON(需 Cache Rules 显式开启);默认缓存
robots.txt。 - Edge TTL 默认值(无缓存头时):
200/206/301→ 120 分钟;302/303→ 20 分钟;404/410→ 3 分钟。 - 不缓存的情形:
Cache-Control: private/no-store/no-cache/max-age=0、Set-Cookie存在、非 GET 请求。 - 无数据出网(egress)费:这是 Cloudflare CDN 的核心优势。
6. 定价
CDN 缓存与 Cache API 不单独按量计费,包含在各套餐内(Free 起即可用)。可能产生费用的是:Cache Reserve 的存储、Logpush 导出、以及超出套餐的上传/可缓存大小上限(需升级套餐)。
7. 最佳实践
- 对静态资源(图片、JS、CSS、字体、视频)依赖默认扩展名缓存,无需额外配置。
- 用 Cache Rules 把 HTML/JSON 等动态内容按需缓存,配合合理的
Edge TTL,大幅降低源站压力。 - 在 Worker 里用 Cache API 缓存「昂贵的计算结果 / 第三方响应」,避免重复回源或重复计算。
- 内容更新后用 Purge 精确清除(按 URL 或前缀),而非全量刷新。
8. 适用场景与选型
- 任何面向公网、追求低延迟与高可用的站点都应开启 CDN 缓存;yuebin.uk 的静态导出正是借由这一层就近分发。
- 与 Workers / R2 / Pages 天然协同:静态资源放 R2、动态逻辑放 Worker、边缘分发靠 CDN。
- 需要精细控制缓存键、缓存特定响应体时,用 Cache API;需要按 URL 批量/条件缓存时,用 Cache Rules。