您可以在存储桶上启用 Local Uploads,以提升客户端从与存储桶不同区域上传数据时的上传请求性能。Local Uploads 先将对象数据写入附近位置,再异步复制到您的存储桶。数据立即可用并保持强一致性。
以下各节说明 R2 在启用和未启用 Local Uploads 时如何处理上传请求。
客户端向 R2 存储桶上传对象时,对象数据必须从客户端传输到存储桶的存储基础设施。当客户端与存储桶位于不同区域时,这可能导致更高延迟和更低可靠性。详情请参阅 R2 工作原理。
向启用了 Local Uploads 的存储桶发起上传请求(即 PutObject 和 UploadPart)时,有两种处理方式:
- 客户端与存储桶在同一区域: R2 遵循正常上传流程,对象数据从客户端上传到存储桶的存储基础设施。
- 客户端与存储桶在不同区域: 对象数据先写入客户端附近的存储,再异步复制到您的存储桶。对象立即可访问,复制过程中保持持久性。
Local Uploads 适用于大量上传来自与存储桶所在地理区域不同的地区的场景。此功能适用于:
- 用户分布全球
- 上传性能和可靠性对应用至关重要
- 希望优化写入性能而不改变存储桶主要位置
要了解读写请求发起的地理分布:
-
登录 Cloudflare 仪表板,前往 R2 Overview。
Go to Overview ↗ -
选择您的存储桶。
-
选择 Metrics(指标),查看 Request Distribution(请求分布) 图表。
启用 local uploads 后,上传的数据可能在复制完成前暂时驻留在客户端附近。
若工作负载需要写入后立即读取,请考虑读取请求的来源。来自上传者区域的读取会很快,而来自存储桶附近区域的读取在复制完成前可能经历跨区域延迟。
Local uploads 不支持具有司法管辖区限制的存储桶,因为需要将数据暂时路由到存储桶区域以外的位置。
启用 Local Uploads 时,现有上传将按预期完成,流量不会中断。
-
登录 Cloudflare 仪表板,前往 R2 Overview。
Go to Overview ↗ -
选择您的存储桶。
-
选择 Settings(设置)。
-
在 Local Uploads(本地上传) 下,选择 Enable(启用)。
运行以下命令:
npx wrangler r2 bucket local-uploads enable <BUCKET_NAME>您可以随时禁用 local uploads。使用 local uploads 的现有请求将完成复制,流量不会中断。
-
登录 Cloudflare 仪表板,前往 R2 Overview。
Go to Overview ↗ -
选择您的存储桶。
-
选择 Settings(设置)。
-
在 Local Uploads(本地上传) 下,选择 Disable(禁用)。
运行以下命令:
npx wrangler r2 bucket local-uploads disable <BUCKET_NAME>启用 local uploads 无额外费用。启用此功能的上传请求产生标准 Class A 操作费用,与未启用 local uploads 的上传请求相同。