概觀

動態 API 或高度個人化的網頁等工作負載難以快取或無法快取。然而,這類工作負載受益於 AWS 邊緣服務 (例如 CloudFront 與 Global Accelerator) 所提供的安全性與加速功能。AWS 邊緣服務在全球數百個分散式連接點 (PoP) 運作,與使用者的平均延遲在 20 至 30 毫秒內。前往來源的流量會透過 AWS 全球網路傳回,而非透過公共網際網路。AWS 全球基礎架構是專門建置、具有高可用性且低延遲的私有基礎架構,以全球性、完全冗餘的地鐵光纖網路為基礎構建,該網路透過地面與跨海纜線連接到全球。

運用 CloudFront 的動態加速

除終止接近使用者的 TCP/TLS 連線外,CloudFront 還可透過以下方式加速動態內容:

  • 透過 QUIC 或 TLS1.3 等現代網際網路通訊協定來提供內容 (即使來源並不支援)。
  • 與來源持續連線。有時,必須將請求轉送到來源,例如當內容不存在本機快取時,或當其純粹為動態時 (例如 API)。透過來自 PoP 持續連線轉送的請求不需建立新的 TCP/TLS 連線至來源,這可移除多次來回造成的延遲,並維護擴展的 TCP 時段。您可進一步提高重複使用連線,方法是增加來源與 CloudFront 組態的 TCP 保留逾時,另一可能做法是啟用 Origin Shield。此外,當來源的連線建立速率較低時,可降低其擴展成本。更具體而言,針對以 EC2 與 ALB 為基礎的來源,這會降低資料傳出 (DTO) 費用,因為從來源傳送 TLS 憑證的 DTO 開銷將降低。請注意,CloudFront 不會在其 DTO 計算過程中計算 TLS 開銷。您可啟用 Origin Shield 來提升 CloudFront 的連線重複使用情況。
    Tinder 與 Slack 在下方影片見證中介紹 CloudFront 如何協助他們大幅縮短 API 回應時間。

Tinder 與 Slack 在下方影片見證中介紹 CloudFront 如何協助他們大幅縮短 API 回應時間。

Slack 分享如何利用 Amazon CloudFront 來確保 API 加速的安全性
透過 CloudFront 來最佳化效能:每毫秒都很重要!

如需詳細資訊了解 CloudFront 如何最佳化 HTTP 動態流量,請閱讀此部落格。此外,此部落格說明如何運用 python 指令碼,來協助您進一步了解 CloudFront 如何改善 HTTP 動態請求效能。

若要採用 CloudFront 作為反向代理,您需要在相關快取行為設定分佈的快取停用受管快取策略。這會指示 CloudFront 將從 PoP 收到的請求直接轉送至您的來源。依預設,如您未明確設定來源請求策略,CloudFront 會先刪除 Cookie、查詢參數與大部分標頭,然後再轉送請求至您的來源。在特別情況下,CloudFront 會傳送帶有來源網域名稱值的託管標頭、附加由請求者 IP 增加的 X-Forwarded-For 標頭,並以 Amazon CloudFront 值覆寫使用者代理程式標頭。請注意,當 CloudFront 設為反向代理時,不會運用 Gzip 或 Brotli 來壓縮回應。

如您需要轉送特定請求屬性至 CloudFront,則需在來源請求策略明確加以設定。例如,您可設定 AllViewer 受管來源請求策略來轉送使用者收到的所有請求屬性。 請注意,如果您這樣做,CloudFront 會以使用者收到的方式傳送託管標頭,而非傳送來源網域名稱的值。當 API 來源在託管標頭預期其來源網域名稱時 (例如利用 API 閘道),請改為設定 AllViewerExceptHostHeader 受管來源請求策略

若要利用來自 CloudFront 的中繼資料 (例如使用者的國家/地區或其裝置相關資訊) 來豐富轉送請求,請在來源請求策略設定相關 CloudFront header。對於自訂動態標頭,例如 True-Client-IP,請利用檢視器請求事件的 CloudFront Function 在上游加以新增。

若要利用 CloudFront 來測試動態內容的性能改進,請查看此研討會

利用 Global Accelerator 進行動態加速

Global Accelerator 採用 BGP 任播路由使用者流量至最近的 PoP。Global Accelerator 由此透過 Amazon 骨幹將您的使用者流量帶至來源。Global Accelerator 運用下列技術進一步提升效能:

  • Jumbo Frame 支援。透過在 AWS 邊緣節點與 AWS 區域的應用程式端點之間啟用 Jumbo Frame,Global Accelerator 能夠在每個封包傳送及接收最多 6 倍資料 (承載)。Jumbo Frame 支援可縮短使用者與應用程式之間傳輸資料所需的總時間。
  • 邊緣的 TCP 終端。Global Accelerator 透過在用戶端與最接近用戶端的 AWS PoP 之間建立 TCP 連線,可減少初始 TCP 設定時間。幾乎同時,在 PoP 與 AWS 區域的應用程式端點之間會建立第二個 TCP 連線。
  • 大型接收側窗、TCP 緩衝區與擁塞視窗。對於 TCP 終止流量,Global Accelerator 可透過調校 AWS 邊緣基礎架構的接收側窗口與 TCP 緩衝設定在更短時間內從您的應用程式接收及緩衝更大量資料。這可向用戶端提供更快的下載速度,讓其可在更短時間內直接從 AWS 邊緣擷取資料。由於 Global Accelerator 利用 AWS 全球網路傳輸資料,因此可縱向擴展 TCP 擁塞時段,相較於採用公共網際網路可傳送的一般資料量,Global Accelerator 可傳送更大量資料。
運用 AWS Global Accelerator 改善效能及可用性

資源

本頁對您是否有幫助?