

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

# 利用 CloudFront 功能优化 MediaTailor 性能
<a name="cloudfront-performance-optimization"></a>

AWS Elemental MediaTailor 除了基本配置之外， CloudFront 还可以通过其他功能来增强 Amazon 的性能。使用设置基本 CloudFront 配置后 MediaTailor，您可以实现其他功能以增强性能、可靠性和自定义选项。这些优化有助于提供更好的观看体验。它们还可以降低成本和原产地负荷。

有关使用动态路由和参数处理进行性能优化的信息，请参见[MediaTailor ADS 请求的动态广告变量](variables.md)。有关查询参数优化策略，请参阅[MediaTailor 清单查询参数](manifest-query-parameters.md)。

## 使用 Origin Shield 减少原点负荷
<a name="origin-shield-integration"></a>

Origin Shield 在 CloudFront 边缘站点和您的源服务器之间添加了一个缓存层。此功能对于直播和热门的 VOD 内容非常有用。当许多观众同时请求相同的内容时，这会有所帮助。

通过整合来自多个边缘站点的请求，Origin Shield 可以减少内容来源的负担 MediaTailor 。

**为你的起源启用 Orig MediaTailor in Shield**

1. 打开 CloudFront 控制台并导航到您的发行版。

1. 选择指向您的 MediaTailor 播放配置的原点。

1. 在 **Origin Shield** 下，选择 “**是**”。

1. 从下拉菜单中，选择离您的 MediaTailor终端节点最近的 AWS 区域。

1. 保存更改。

对于高流量事件，Origin Shield 可显著减少源站的请求负载并提高可靠性。有关详细说明，请参阅 CloudFront 开发者指南中的[启用 Origin Shield](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/origin-shield.html#enable-origin-shield)。

## 使用函数自定义内容交 CloudFront 付
<a name="cloudfront-functions-integration"></a>

CloudFront 函数允许您在边缘运行轻量级 JavaScript 代码来修改查看者的请求和响应。您可以使用这些函数进行简单的自定义，例如网址修改、标头操作或基本身份验证。对于 MediaTailor 工作流程，Functions 可以帮助完成不需要复杂处理的任务。

CloudFront 函数提供了一种在边缘自定义内容交付的轻量级方法。以下是如何为您的 MediaTailor 集成实现它们：

**要实现以下各项的 CloudFront 函数 MediaTailor**

1. 在 CloudFront 控制台中，导航到**函数**。

1. 创建一个新函数并选择适当的用途：
   + **网址操纵**-在多变播放列表、媒体播放列表和 MPD 请求到达 URLs 之前对其进行修改 MediaTailor
   + **标头操作**-添加或修改请求标头
   + **简单身份验证**-用于验证令牌或查询参数

1. 编写你的 JavaScript 函数代码。

1. 使用示例 MediaTailor 请求测试您的函数。

1. 发布该函数并将其与分配的缓存行为相关联。

**Example URL 标准化示例 CloudFront 函数**  

```
function handler(event) {
    var request = event.request;
    var uri = request.uri;
    
    // Normalize URLs to lowercase to improve cache hit ratio
    if (uri.includes('.m3u8') || uri.includes('.mpd')) {
        request.uri = uri.toLowerCase();
    }
    
    return request;
}
```

有关更多信息和代码示例，请参阅 CloudFront 开发者指南[中的使用 CloudFront 函数在边缘进行自定义](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-functions.html)。

## 使用 Lambda 实现高级自定义 @Edge
<a name="lambda-edge-integration"></a>

当您需要比 CloudFront 函数所能提供的更复杂的处理能力时，可以使用 Lambda @Edge。此服务允许您在 CloudFront 边缘位置运行 Node.js 或 Python 函数。

Lambda @Edge 函数可以执行复杂的操作，例如复杂的身份验证、更大的响应修改或第三方 API 集成。

要进行更复杂的自定义，请将 Lambda @Edge 函数与 MediaTailor 你的 CloudFront和集成一起使用：

**要使用 Lambda @Edge 来实现 MediaTailor**

1. 在美国东部（弗吉尼亚州北部）区域创建 Lambda 函数。

1. 为以下用例之一编写函数代码：
   + **网址操纵**-在多变播放列表、媒体播放列表和 MPD 请求到达 URLs 之前对其进行修改 MediaTailor
   + **A/B 测试**-将用户路由到不同的广告决策服务器
   + **请求身份验证**-添加身份验证标头
   + **修改响应标头**-添加 CORS 标头

1. 发布您的函数版本并创建函数别名。

1. 在适当的触发点（查看者请求或查看者响应）将函数与您的 CloudFront 分布相关联。

**注意**  
使用 Lambda @Edge 时 MediaTailor，如果您计划使用媒体质量感知弹性 (MQAR) 功能，请避免使用面向源的触发器（源请求和源站响应），因为这些功能目前不兼容。

有关更多信息和代码示例，请参阅 CloudFront 开发者指南[中的使用 Lambda @Edge 在边缘进行自定义](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html)。

## 其他性能优化技巧
<a name="performance-optimization-tips"></a>

考虑以下额外优化以进一步提高性能：

优化缓存命中率  
在 CloudFront 指标中监控你的缓存命中率，并寻找改善它的机会：  
+ 标准化 URL 模式以提高缓存密钥的一致性
+ 使用查询字符串白名单在缓存密钥中仅包含必需的参数
+ 考虑使用 CloudFront 函数实现 URL 标准化

减少延迟  
实施以下技术以最大限度地减少延迟：  
+ 为基于文本的响应启用 Brotli 压缩
+ 使用 HTTP/2 或 HTTP/3 来提高连接效率
+ 考虑启用对现代网络的 IPv6 支持

成本优化  
在性能与成本效益之间取得平衡：  
+ 使用 Origin Shield 减少冗余的源站请求
+ 考虑根据受众地理位置选择价格等级
+ 对区段实施主动缓存以减少源站流量

## 后续步骤
<a name="performance-next-steps"></a>

使用 CloudFront 功能优化性能后，请考虑以下步骤：
+ 使用 MQAR 实现多区域弹性（参见）[MediaTailor 使用 MQAR 实现多区域弹性](media-quality-resiliency.md)
+ 设置监控和故障排除（请参阅[监控您的和 MediaTailor 集成， CloudFront 并对其进行故障排除](monitoring-and-troubleshooting.md)）