

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 CloudFront 功能最佳化 MediaTailor 效能
<a name="cloudfront-performance-optimization"></a>

AWS Elemental MediaTailor 使用 Amazon CloudFront 的效能可以透過基本組態以外的其他功能進行增強。使用 MediaTailor 設定基本 CloudFront 組態之後，您可以實作其他功能來增強效能、可靠性和自訂選項。這些最佳化有助於提供更好的檢視體驗。它們也會降低成本和原始負載。

如需使用動態路由和參數處理的效能最佳化，請參閱 [ADS 請求的 MediaTailor 動態廣告變數](variables.md)。如需查詢參數最佳化策略，請參閱 [MediaTailor 資訊清單查詢參數](manifest-query-parameters.md)。

## 使用 Origin Shield 減少原始伺服器負載
<a name="origin-shield-integration"></a>

Origin Shield 在 CloudFront 節點和原始伺服器之間新增快取層。此功能對於即時串流和熱門 VOD 內容非常有用。當許多瀏覽者同時請求相同的內容時，這很有幫助。

透過合併來自多個節點的請求，Origin Shield 可減少 MediaTailor 和內容原始伺服器的負載。

**為您的 MediaTailor 原始伺服器啟用 Origin 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 Functions 自訂內容交付
<a name="cloudfront-functions-integration"></a>

CloudFront Functions 可讓您在邊緣執行輕量型 JavaScript 程式碼，以修改檢視器請求和回應。您可以使用這些函數進行簡單的自訂，例如 URL 修改、標頭操作或基本身分驗證。對於 MediaTailor 工作流程，Functions 可協助處理不需要複雜處理的任務。

CloudFront Functions 提供輕量的方式來自訂邊緣的內容交付。以下是為 MediaTailor 整合實作它們的方法：

**實作 MediaTailor 的 CloudFront 函數**

1. 在 CloudFront 主控台中，導覽至**函數**。

1. 建立新的 函數，然後選取適當的用途：
   + **URL 操作** - 在多變體播放清單、媒體播放清單和 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 Functions 在邊緣自訂](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-functions.html)。 CloudFront 

## 使用 Lambda@Edge 實作進階自訂
<a name="lambda-edge-integration"></a>

當您需要比 CloudFront Functions 更複雜的處理功能時，請使用 Lambda@Edge。此服務可讓您在 CloudFront 節點執行 Node.js 或 Python 函數。

Lambda@Edge 函數可以執行複雜的操作，例如複雜的身分驗證、較大的回應修改或第三方 API 整合。

如需更複雜的自訂，請將 Lambda@Edge 函數與 MediaTailor 和 CloudFront 整合搭配使用：

**使用 MediaTailor 實作 Lambda@Edge**

1. 在美國東部 (維吉尼亞北部) 區域建立 Lambda 函數。

1. 為下列其中一個使用案例撰寫函數程式碼：
   + **URL 操作** - 在多變體播放清單、媒體播放清單和 MPD 請求 URLs到達 MediaTailor 之前進行修改
   + **A/B 測試** - 將使用者路由到不同的廣告決策伺服器
   + **請求身分驗證** - 新增身分驗證標頭
   + **回應標頭修改** - 新增 CORS 標頭

1. 發佈函數的版本並建立函數別名。

1. 在適當的觸發點 （檢視器請求或檢視器回應） 將函數與 CloudFront 分佈建立關聯。

**注意**  
搭配 MediaTailor 使用 Lambda@Edge 時，如果您計劃使用 Media Quality-Aware Resiliency (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 Functions 實作 URL 標準化

減少延遲  
實作這些技術，將延遲降至最低：  
+ 針對文字型回應啟用 Brotli 壓縮
+ 使用 HTTP/2 或 HTTP/3 以提高連線效率
+ 考慮啟用現代網路的 IPv6 支援

成本最佳化  
平衡效能與成本效益：  
+ 使用 Origin Shield 減少備援原始伺服器請求
+ 根據您的受眾地理位置考慮價格分級選擇
+ 實作區段的積極快取，以減少原始流量

## 後續步驟
<a name="performance-next-steps"></a>

使用 CloudFront 功能最佳化效能之後，請考慮下列後續步驟：
+ 使用 MQAR 實作多區域彈性 （請參閱 [使用 MQAR 實作 MediaTailor 的多區域彈性](media-quality-resiliency.md))
+ 設定監控和故障診斷 （請參閱 [監控 CloudFront 和 MediaTailor 整合並進行疑難排解](monitoring-and-troubleshooting.md))