Cache Reserve 是一个大型持久化数据存储,基于 R2 实现。只需在仪表板中点击一个按钮,您网站的可缓存内容就会写入 Cache Reserve。
与 Tiered Cache 在访客与源站之间构建缓存层级类似,Cache Reserve 作为终极上层缓存,会按您所需时长为资源预留存储空间。这确保内容在缓存中保留更久,保护源站免受不必要的出站流量费用。
Cache Reserve 中的内容根据 Edge Cache TTL 设置或源站的 Cache-Control 标头(如果未设置 Edge Cache TTL)被视为新鲜。新鲜期过期后,Cloudflare 在下次请求时与源站重新验证资源。这与 Cloudflare 常规 CDN 中的行为相同。
保留期控制资源在从 Cache Reserve 移除之前在其中的停留时间。Cache Reserve 从 30 天的保留期开始。如果资源在保留期内未被请求,将从 Cache Reserve 移除。请求资源会重置保留期。
资源必须满足某些条件才能使用 Cache Reserve。
Cache Reserve 是按使用量计费的产品,定价如下。虽然 Cache Reserve 需要付费计划,用户仍可以免费使用 Cloudflare 的 CDN(不含 Cache Reserve)。
需要付费的 Cache Reserve 方案。
-
在 Cloudflare 仪表板中,转到 Cache Reserve(缓存储备) 页面。
Go to Cache Reserve ↗ -
选择 Enable storage sync(启用存储同步)。
有关更多信息,请参阅 Change Cache Reserve setting API。
如果您是 Enterprise 客户并对 Cache Reserve 感兴趣,请联系账户团队获取配置帮助。
并非所有资源都符合 Cache Reserve 的准入条件。要进入 Cache Reserve,资源必须:
- 根据 Cloudflare 标准可缓存性因素可缓存。
- 具有至少 10 小时的新鲜度 TTL(可通过任意方式设置,例如 Cache-Control / CDN-Cache-Control 源站响应标头、Edge Cache TTL、Cache TTL By Status 或 Cache Rules)。
- 具有 Content-Length 响应标头。
- 使用 Image transformations 时,原始文件符合 Cache Reserve 准入条件,但调整尺寸后的文件变体不符合,因为转换发生在 Cache Reserve 之后的响应流程中。
要从 Cache Reserve 中删除所有数据,请参阅 Cache Reserve 清除按钮。
请注意,Purge Everything(全部清除)对 Cache Reserve 执行软清除,不会更新 Cache Response Rules 设置的元数据(例如缓存标签)。要刷新该元数据,请清除单个资源或等待其完全过期。
- Cache Reserve 文件限制与 R2 限制相同。请注意,CDN 缓存限制仍然适用。大于标准限制的资源不会存储在标准 CDN 缓存中,因此这些资源会更频繁地产生 Cache Reserve 操作费用。
- Cache Reserve 目前不支持来自源站的 Range 请求。
- Vary for images 目前与 Cache Reserve 不兼容。
- 对链接到 zone 域名的 R2 公共存储桶的请求不会使用 Cache Reserve。为关联 zone 启用 Cache Reserve 后,仅对非 R2 存储桶目标的请求使用 Cache Reserve。
- Cache Reserve 会直接从源站请求未压缩内容。与标准 Cloudflare CDN 不同,Cache Reserve 向源站发送请求时不包含
Accept-Encoding: gzip标头。 - 使用 Cloudflare O2O 设置时会绕过 Cache Reserve。
与标准 CDN 一样,Cache Reserve 也使用 cf-cache-status 标头来表示 缓存响应状态,如 MISS、HIT 和 REVALIDATED。Cache Reserve 的缓存未命中和命中会计入仪表板的缓存命中率。
通过 CacheReserveUsed Logpush 字段可以查看填充 Cache Reserve 或由 Cache Reserve 提供的个别抽样请求。
Cache Reserve 的每月操作和存储使用情况可在仪表板中查看。
Cache Reserve 根据存储的数据总量以及对该数据的两类操作计费:
大多数情况下,Cache Reserve 未命中会产生一次 A 类操作和一次 B 类操作,Cache Reserve 命中会产生一次 B 类操作。大于 1 GB 的资源会按比例产生更多操作。
| 费率 | |
|---|---|
| 存储 | $0.015 / GB-月 |
| A 类操作(写入) | $4.50 / 百万请求 |
| B 类操作(读取) | $0.36 / 百万请求 |
存储使用以 GB-月(gigabyte-month)为计费指标。GB-月通过记录当月存储的总字节数来计算。
例如:
- 存储 1 GB 持续 30 天,计费为 1 GB-月。
- 存储 2 GB 持续 15 天,计费为 1 GB-月。
操作由 Cache Reserve 代表用户执行,将数据从源站写入 Cache Reserve,并将该数据向下游传递到 Cloudflare 网络的其他部分。这些操作由 Cloudflare 在内部管理。
Class A 操作基于 Cloudflare CDN 的缓存未命中执行。当请求无法从缓存提供时,将从源站获取并写入 Cache Reserve,同时在返回访客途中写入边缘缓存。
Class B 操作在需要从 Cache Reserve 获取数据以响应边缘缓存未命中时执行。
资源清除为免费操作。
当您发送按 URL 清除请求时,Cache Reserve 会与边缘缓存一起即时清除。详情请参阅缓存配置。
其他清除方法(如按标签、主机、前缀清除或全部清除)会强制在后续对 Cache Reserve 资源的请求上尝试重新验证。请注意,以这种方式清除的资源在保留 TTL 到期之前仍会产生存储费用。
假设月初将 1,000 个资源(每个 1 GB)写入 Cache Reserve,且每个资源被读取 1,000 次,当月的预估费用为:
| 用量 | 可计费数量 | 价格 | |
|---|---|---|---|
| B 类操作 | (1,000 个资源) * (每个资源 1,000 次读取) | 1,000,000 | $0.36 |
| A 类操作 | (1,000 个资源) * (每个资源 1 次写入) | 1,000 | $4.50 |
| 存储 | (1,000 个资源) * (每个资源 1GB) | 1,000 GB-月 | $15.00 |
| 总计 | $19.86 | ||
假设 Cache Reserve 中有 1,000,000 个资源(每个 1 MB),且:
- 每个资源每天过期并重新写入 Cache Reserve 1 次
- 每个资源每天被读取 2 次
当月的预估费用为:
| 用量 | 可计费数量 | 价格 | |
|---|---|---|---|
| B 类操作 | (1,000,000 个资源) * (每天 2 次读取) * (30 天) | 60,000,000 | $21.60 |
| A 类操作 | (1,000,000 个资源) * (每天 1 次写入) * (30 天) | 30,000,000 | $135.00 |
| 存储 | (1,000,000 个资源) * (每个资源 1MB) | 1,000 GB-月 | $15.00 |
| 总计 | $171.60 | ||
Cache Reserve 设计为与启用的分层缓存(Tiered Cache)配合使用,以实现最大源站屏蔽效果。不使用 Tiered Cache 而使用 Cache Reserve 可能会导致更高的存储操作成本。如果您尝试在不启用 Tiered Cache 的情况下启用 Cache Reserve,Cloudflare 仪表板将会发出警告。
Cache Reserve Analytics 提供有关 Cache Reserve 使用情况的洞察。您可以查看哪些内容存储在 Cache Reserve 中、访问频率、存储时长,以及它为您节省了多少源站出站流量。
在 Overview 部分的 Cache Reserve 下,您可以访问以下指标:
- Egress savings (bandwidth)(出站节省(带宽)) - 基于从 Cache Reserve 提供且无需从源站服务器提供的响应字节数的估算。这些表示为缓存命中。
- Requests served by Cache Reserve(Cache Reserve 提供的请求数) - 由 Cache Reserve 提供的请求总数。
- Data storage summary(数据存储摘要) - 基于代表性请求样本。有关 Cloudflare 如何采样数据的更多详情,请参阅采样。
- Current data stored(当前存储数据) - 随时间变化的当前存储数据。
- Aggregate storage usage(聚合存储用量) - 所选时间戳的总存储用量。
- Operations(操作) - 随时间变化的 Class A(写入)和 Class B(读取)操作。
您可以通过仪表板或 API 清除 Cache Reserve 中存储的所有数据。要清除 Cache Reserve:
- 该域必须已启用 Cache Reserve。
- Cache Reserve 需要处于关闭状态。
请注意,删除操作可能需要长达 24 小时才能完成。
-
在 Cloudflare 仪表板中,转到 Cache Reserve(缓存储备) 页面。
Go to Cache Reserve ↗ -
在 **Delete Cache Reserve Data(删除 Cache Reserve 数据)**中,选择 Delete Storage(删除存储)。
要通过 API 删除 Cache Reserve 数据,请使用以下示例请求。有关更多信息,请参阅 API 文档。
请求 1:获取 Cache Reserve 状态
Required API token permissions
At least one of the following token permissions is required:Zone Settings WriteZone Settings ReadZone ReadZone Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/cache_reserve" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"result": {
"editable": true,
"id": "cache_reserve",
"value": "off"
},
"success": true,
"errors": [],
"messages": []
}如果 Cache Reserve 已关闭,您可以继续执行 Cache Reserve 清除操作。
请求 2:启动 Cache Reserve 清除
Required API token permissions
At least one of the following token permissions is required:Zone Settings WriteZone Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/cache_reserve_clear" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"result": {
"id": "cache_reserve_clear",
"start_ts": "2024-06-02T10:00:00.12345Z",
"state": "In-progress"
},
"success": true,
"errors": [],
"messages": []
}