

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

# 优化 CDN 缓存 MediaTailor 和 MediaPackage 内容交付
<a name="cdn-emp-caching"></a>

AWS Elemental MediaTailor 当 AWS Elemental MediaPackage 用作内容来源时，需要适当的内容分发网络 (CDN) 缓存配置才能获得最佳性能。 MediaPackage 提供特定的缓存控制标头，告诉您的内容分发网络将不同类型的内容缓存多长时间。遵循这些建议可以确保流畅的播放和高效的内容交付。

本主题专门介绍如何优化缓存行为以最大限度地提高性能和降低成本。在实施高级缓存优化之前，请确保您已完成基本的内容交付网络集成设置。如果您尚未设置基本集成，请从开始[MediaTailor 与 CDN MediaPackage 集成](mediapackage-integration.md)。

## MediaPackage 缓存控制标头
<a name="emp-cache-control-headers"></a>

MediaPackage 为不同的内容类型设置特定的 TTL 值以优化缓存行为：

**多变体播放列表（HLS 和 LL-HLS）**  
TTL：媒体片段时长的一半  
原因：这些播放列表会随着新片段的推出而变化，因此需要经常更新

**媒体播放列表（常规 HLS）**  
TTL：媒体片段时长的一半  
原因：与多变体播放列表类似，这些播放列表会随着内容的进展而更新

**媒体播放列表 (LL-HLS)**  
TTL：1 秒  
原因：低延迟直播需要非常频繁的更新

**TS 媒体片段和初始化片段**  
TTL：1209600 秒（14 天）  
原因：媒体区段创建后不会更改，因此可以长时间缓存

**CMAF 媒体片段和初始化片段**  
TTL：1209600 秒（14 天）  
原因：就像 TS 区段一样，这些区段一旦创建就不可变

有关所有 MediaTailor 工作流程的全面 TTL 建议以及其他缓存优化策略，请参阅[针对 CDN 和 MediaTailor 集成的缓存优化](cdn-optimize-caching.md)。

## 配置 CDN 缓存策略
<a name="cdn-cache-policy-configuration"></a>

正确的缓存策略配置对于实现最佳性能和成本效益至关重要。不同类型的内容（清单、区段、初始化文件）有不同的缓存要求。使用单独的缓存行为可以优化每种内容类型的缓存，从而提高缓存命中率并减少源负载。如果没有适当的缓存策略，您可能会遇到不必要的原始请求、成本增加和播放性能不佳的情况。

要正确使用缓存 MediaPackage 控制标头并优化缓存，请执行以下操作：

1. 在 CloudFront 控制台中打开您的 CloudFront 分发设置。

1. 为不同的内容类型创建单独的缓存行为：
   + 清单请求（\$1.m3u8、\$1.mpd）
   + 媒体片段（\$1.ts、\$1.mp4、\$1.m4s）
   + 初始化片段

1. 对于每种缓存行为，请使用以下设置创建或选择缓存策略：
   + 启用 “Origin 缓存控制标头” 选项
   + 设置 “原始请求策略” 以转发必要的标头
   + 根据内容类型配置查询字符串转发

### 清单缓存行为
<a name="manifest-cache-behavior"></a>

对于清单请求（\$1.m3u8、\$1.mpd）：
+ **路径模式**：\$1.m3u8 和 \$1.mpd
+ **缓存策略**：Honor Origin 缓存控制标头
+ **查询字符串**：转发特定参数（请参阅[优化查询字符串的转发](#cdn-query-string-optimization)）
+ **标题**：转发所有标题（有关最低要求，请参阅[MediaTailor CDN 集成所需的标头](cdn-configuration.md#cdn-required-headers)）

### 媒体片段缓存行为
<a name="segment-cache-behavior"></a>

对于媒体片段（\$1.ts、\$1.mp4、\$1.m4s）：
+ **路径模式**：\$1.ts、\$1.mp4、\$1.m4s
+ **缓存策略**：Honor Origin 缓存控制标头（14 天 TTL）
+ **查询字符串**：无（区段不使用查询参数）
+ **压缩**：启用压缩可提高交付性能

## 优化查询字符串的转发
<a name="cdn-query-string-optimization"></a>

查询字符串优化对于缓存效率至关重要，因为不必要的查询参数会为相同的内容创建多个缓存变体。每个唯一的查询参数组合都会创建一个单独的缓存条目，从而降低缓存命中率并增加源请求。通过仅转发 MediaPackage 实际使用的查询字符串，可以在保持全部功能的同时最大限度地提高缓存效率。

将 CDN 配置为仅转发 MediaPackage 使用的查询字符串，从而提高缓存效率：

**基本查询字符串**  
`start`和 `end`-用于时移查看窗口  
`time_delay`-用于对清单内容应用延迟  
`_HLS_msn``_HLS_m`、和 `_HLS_part`-适用于 LL-HLS 播放请求

**特定功能的查询字符串**  
`aws.manifestfilter`-用于[清单筛选](cdn-emp-manifest-filtering.md)

**重要**  
请勿在缓存密钥中包含任何其他查询字符串。 MediaPackage 忽略无法识别的参数，包括这些参数会产生不必要的缓存变体，从而降低缓存效率。

## 性能优化技术
<a name="cache-performance-optimization"></a>

这些优化是在您的 CDN（例如 CloudFront）上配置的，而不是在或中 MediaPackage 配置的。 MediaTailor实施以下额外优化以最大限度地提高缓存性能：

### 起源盾牌
<a name="origin-shield-configuration"></a>

Origin shield 在您的 CDN 边缘站点和 MediaPackage 端点之间提供了额外的缓存层。这样可以减少到达 MediaPackage终端节点的请求数量，从而提高性能并降低成本，尤其是在流量高峰期间或缓存命中率低于最佳状态时。Origin shield 对于直播特别有用，因为在直播中，多个边缘站点可能会同时请求相同的内容。

启用 Origin shield 以减少 MediaPackage 终端的负载：

1. 在你的 CloudFront 分发中，为你的来源启用 Orig MediaPackage in Shield。

1. 选择靠近您的 MediaPackage 终端的起源盾牌区域。

1. 这会创建额外的缓存层，从而将请求减少到 MediaPackage。

### 压缩配置
<a name="compression-settings"></a>

为基于文本的响应启用压缩：
+ 为清单文件（\$1.m3u8、\$1.mpd）启用压缩
+ 不要压缩媒体片段（已压缩）
+ 确保所有标题都转发到 MediaPackage （有关最低要求，请参阅[MediaTailor CDN 集成所需的标头](cdn-configuration.md#cdn-required-headers)）

## 监控缓存性能
<a name="cache-monitoring-metrics"></a>

跟踪以下关键指标以确保最佳缓存性能：

**缓存命中率**  
目标：媒体细分为 90% 或更高，清单为 70% 或更高  
低比率可能表示 TTL 设置不正确或查询参数不必要

**源站请求量**  
监控到达 MediaPackage 终端节点的请求  
高音量可能表示存在缓存问题

**缓存密钥变体**  
查看缓存密钥模式以识别不必要的变体  
变体太多会降低缓存效率

实施这些缓存优化后，设置监控以跟踪其有效性。有关监控缓存命中率、源请求模式和其他关键性能指标的指导，请参阅[监控 CDN 和 MediaTailor 集成的性能 MediaPackage](cdn-emp-monitoring.md)。如果您发现缓存性能不佳或源请求意外，[故障排除 MediaPackage、CDN 和集成 MediaTailor](cdn-emp-troubleshooting.md)请参见以了解故障排除步骤。