AWS Elemental MediaStore 与 HTTP 缓存的互动 - AWS元素 MediaStore

终止支持通知:2025 年 11 月 13 日, AWS 将停止对 AWS Element MediaStore al 的支持。2025 年 11 月 13 日之后,您将无法再访问 MediaStore 控制台或 MediaStore 资源。如需更多信息,请访问此博客文章

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Elemental MediaStore 与 HTTP 缓存的互动

AWS Elemental MediaStore 存储对象的方式使得像 Amazon CloudFront 这样的内容分发网络 (CDN) 可以正确高效地缓存对象。当最终用户或 CDN 从 MediaStore 中检索对象时,服务将返回影响对象缓存行为的 HTTP 标头。(HTTP 1.1 缓存标准行为可在 RFC2616 第 13 节中找到。) 这些标头包括:

  • ETag (不可自定义) – 实体标签标头是 MediaStore 发送的响应的唯一标识符。符合标准的 CDN 和 Web 浏览器使用此标签作为缓存对象的密钥。上传对象时,MediaStore 会自动为其生成一个ETag。您可以查看对象的详细信息以确定其 ETag 值。

  • Last-Modified(不可自定义)– 此标题的值表示修改对象的日期和时间。上传对象时,MediaStore 会自动生成该数值。

  • Cache-Control(可自定义) – 此标头的值控制 CDN 应在对象缓存多久后检查该对象是否经过修改。使用 CLIAPI 将对象上传到 MediaStore 容器时,可以将此标头设置为任何值。HTTP/1.1 文档中介绍了完整的有效值集。如果您在上传对象时未设置此值,则 MediaStore 在检索对象时不会返回此标头。

    Cache-Control 标头的常见用例是指定缓存对象的持续时间。例如,假设您有一个经常被编码器覆盖的视频清单文件。您可以将 max-age 设置为 10 以指示对象应仅缓存 10 秒。或者假设您存储了一个永远不会被覆盖的视频段。您可以将此对象的 max-age 设置为 31536000,以缓存大约 1 年。

有条件请求

向 MediaStore 发出的有条件请求

MediaStore 以相同的方式响应有条件请求(使用 If-Modified-SinceIf-None-Match 等请求标头,如 RFC7232 中所述)和无条件请求。这意味着当 MediaStore 收到有效的 GetObject 请求时,即使客户端已经拥有对象,服务也始终返回该对象。

对 CDN 的有条件请求

代表 MediaStore 提供内容的 CDN 可以通过返回 304 Not Modified 处理有条件请求,如 RFC7232 第 4.1 节中所述。这指示不需要传输完整的对象内容,因为请求者已有一个与有条件请求匹配的对象。

CDN(以及符合 HTTP/1.1 的其他缓存)基于源服务器转发的 ETagCache-Control 标头做出这些决策。要控制 CDN 查询 MediaStore 源服务器以获取对重复检索对象的更新的频率,请在将这些对象上传到 MediaStore 时设置其 Cache-Control 标头。