除非 Edge Cache TTL cache rule 覆盖标头,否则 Cloudflare 按以下顺序遵循源站 Web 服务器的 cache 标头。有关默认 TTL 行为的详情,请参阅 Edge TTL 部分。
- 在以下情况下,Cloudflare 不会缓存资源:
Cache-Control标头设置为private、no-store、no-cache或max-age=0。- 存在 Set-Cookie 标头。
- HTTP 请求方法不是
GET。
- 在以下情况下,Cloudflare 会缓存资源:
Cache-Control标头设置为public且max-age大于 0。Expires标头设置为未来日期。
当 Enterprise 客户的网站启用 Origin Cache Control 时,表示 Cloudflare 应严格遵循从源站服务器收到的 Cache-Control 指令。Free、Pro 和 Business 客户默认启用此功能。有关启用或禁用 Origin Cache Control 时的指令和行为列表,请参阅 Cache-Control directives。
客户端可以使用 Range 标头发送 range 请求以从缓存提供内容。请注意:
- 如果源站响应包含
Content-Length标头,则指定的字节范围将以 HTTP 206 响应返回。 - 如果源站响应不包含
Content-Length标头,缓存将以 HTTP 200 响应返回完整内容。
当多个请求同时到达单个 Cloudflare 数据中心请求同一未缓存资源(缓存未命中)时,Cloudflare 使用cache lock避免向源站发送重复请求。只有第一个请求会转发到源站获取资源。其余请求等待第一个请求完成,之后响应会流式传输 ↗到所有等待的请求。
cache lock 确保 Cloudflare 在 Cloudflare 网络中单个位置对给定资源每次只向源站发送一个请求,防止源站收到过多流量。
Cloudflare 仅基于文件扩展名缓存,而非 MIME 类型。Cloudflare CDN 默认不缓存 HTML 或 JSON。此外,Cloudflare 默认缓存网站的 robots.txt。
| 7Z | CSV | GIF | MIDI | PNG | TIF | ZIP |
| AVI | DOC | GZ | MKV | PPT | TIFF | ZST |
| AVIF | DOCX | ICO | MP3 | PPTX | TTF | |
| APK | DMG | ISO | MP4 | PS | WEBM | |
| BIN | EJS | JAR | OGG | RAR | WEBP | |
| BMP | EOT | JPG | OTF | SVG | WOFF | |
| BZ2 | EPS | JPEG | SVGZ | WOFF2 | ||
| CLASS | EXE | JS | PICT | SWF | XLS | |
| CSS | FLAC | MID | PLS | TAR | XLSX |
要缓存更多内容,请参阅 Cache Rules 创建规则以缓存所有内容。
默认情况下,当不存在 cache-control 指令或 expires 响应标头时,Cloudflare 会按以下 Edge Cache TTL 缓存某些 HTTP 响应码。
| HTTP status code | Default TTL |
|---|---|
| 200, 206, 301 | 120m |
| 302, 303 | 20m |
| 404, 410 | 3m |
所有其他状态码默认不缓存。
Cloudflare 的 CDN 提供多种 cache 自定义选项:
- 通过 Cache Rules 为单个 URL 设置缓存行为
- 使用 Cloudflare Workers 自定义缓存
- 在 Cloudflare 仪表板的 Caching 页面调整缓存级别、cache TTL 等:
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
Availability | Yes | Yes | Yes | Yes |
Max upload size | 100 MB | 100 MB | 200 MB | 500+ MB |
客户可以从 区域的 Network(网络) 页面减少 Maximum Upload Size(最大上传大小)。
如果需要更大的上传,可以将请求分组为较小的块,通过 DNS-only(未代理)DNS 记录上传完整资源,或升级计划。
Cloudflare 可缓存文件限制:
- Free、Pro 和 Business 客户限制为 512 MB。
- Enterprise 客户默认可缓存文件大小最大为 5 GB。请联系账户团队请求提高限制。
访客与 Cloudflare 之间的连接状态可能不同,影响 Cloudflare 是否缓存内容。如果 Cloudflare 已建立与源站的连接并开始获取内容,即使访客中途断开连接,它也会继续检索并缓存整个内容。但是,如果访客在源站响应 Cloudflare 请求之前断开连接,尚未获取任何内容,因此 Cloudflare 不会开始缓存内容。