編輯

共用方式為


CDN 指引

Azure 儲存體
Azure Blob 儲存體

內容傳遞網路 (CDN) 是伺服器的分散式網路,可以有效地將網頁內容傳遞給使用者。 CDN 會將快取的內容儲存在接近使用者的邊緣伺服器上,以將延遲降到最低。

CDN 通常用來傳遞靜態內容,例如影像、樣式表、文件、檔案、用戶端指令碼和 HTML 頁面。 使用 CDN 的主要優點是較低的延遲及更快將內容傳遞給使用者,而與裝載應用程式的資料中心的地理位置無關。 CDN 也有助於降低 Web 應用程式的負載,因為此類應用程式不需要處理對 CDN 所裝載的內容提出的要求。

CDN 圖表

在 Azure 中,Azure 內容傳遞網路 是全域 CDN 解決方案,可提供裝載於 Azure 或任何其他位置的高頻寬內容。 使用 Azure 內容傳遞網路,您可以快取從 Azure Blob 記憶體、Web 應用程式、虛擬機、任何可公開存取的 Web 伺服器載入的公開可用物件。

本主題描述使用 CDN 時的一些一般最佳做法和考慮。 如需詳細資訊,請參閱 Azure CDN

CDN 的使用方式和原因

CDN 的一般用法包括:

  • 提供用戶端應用程式的靜態資源,通常是從網站傳遞。 這些資源可以是影像、樣式表單、檔、檔案、用戶端腳本、HTML 頁面、HTML 片段,或伺服器不需要針對每個要求修改的任何其他內容。 應用程式可以在運行時間建立專案,並將其提供給CDN使用(例如,藉由建立目前新聞頭條新聞的清單),但不會針對每個要求執行此動作。

  • 將公用靜態和共用內容傳遞給行動電話和平板電腦等裝置。 應用程式本身是 Web 服務,可提供 API 給在各種裝置上執行的用戶端。 CDN 也可以傳遞靜態數據集(透過 Web 服務)供用戶端使用,或許可以產生用戶端 UI。 例如,CDN 可用來散發 JSON 或 XML 檔。

  • 為整個網站提供服務,這些網站只包含公用靜態內容給用戶端,而不需要任何專用的計算資源。

  • 視需要將視訊檔案串流至用戶端。 影片受益於提供CDN連線的全域數據中心提供的低延遲和可靠連線。 Microsoft Azure 媒體服務 與 Azure 內容傳遞網路 整合,將內容直接傳遞至 CDN 以進行進一步發佈。 如需詳細資訊,請參閱 串流端點概觀

  • 一般而言,改善用戶的體驗,尤其是遠離裝載應用程序的數據中心的使用者。 否則,這些使用者可能會遭受較高的延遲。 Web 應用程式中內容總大小的很大一部分通常是靜態的,而使用 CDN 有助於維護效能和整體用戶體驗,同時不需要將應用程式部署至多個資料中心。 如需 Azure 內容傳遞網路 節點位置的清單,請參閱 Azure CDN POP 位置

  • 支援IoT(物聯網)解決方案。 IoT 解決方案所涉及的大量裝置和設備,如果應用程式必須直接將韌體更新散發到每個裝置,就很容易使應用程式不知所措。

  • 在不要求應用程式調整的情況下應付需求尖峰和激增,避免因此增加運行成本。 例如,當硬體裝置如特定路由器型號或智慧電視等消費者裝置的操作系統更新發行時,將會有巨大的需求尖峰,因為數百萬使用者和裝置在短時間內下載。

挑戰

規劃使用CDN時,有幾個要考慮的挑戰。

  • 部署。 決定 CDN 擷取內容的來源,以及您是否需要在多個記憶體系統中部署內容。 請考慮到部署靜態內容和資源的程式。 例如,您可能需要實作個別步驟,將內容載入 Azure Blob 記憶體。

  • 版本控制和快取控制。 請考慮如何更新靜態內容並部署新版本。 瞭解CDN如何執行快取和存留時間(TTL)。 如需 Azure 內容傳遞網路,請參閱快取的運作方式。

  • 測試。 在本機或預備環境中開發和測試應用程式時,很難執行CDN設定的本機測試。

  • 搜尋引擎優化 (SEO)。 當您使用 CDN 時,影像和文件等內容會從不同的網域提供。 這會影響此內容的 SEO。

  • 內容安全性。 並非所有CDN都提供任何形式的內容訪問控制。 某些 CDN 服務,包括 Azure 內容傳遞網路,支援令牌型驗證來保護 CDN 內容。 如需詳細資訊,請參閱使用令牌驗證保護 Azure 內容傳遞網路 資產。

  • 用戶端安全性。 用戶端可能會從不允許存取CDN上資源的環境進行連線。 這可能是一個安全性限制的環境,其只會限制對一組已知來源的存取,或防止從頁面來源以外的任何專案載入資源的環境。 需要後援實作才能處理這些案例。

  • 復原能力。 CDN 是應用程式的潛在單一失敗點。

CDN 可能不太有用的案例包括:

  • 如果內容命中率較低,則它可能只在有效時存取數次(取決於其存留時間設定)。

  • 如果數據是私人的,例如大型企業或供應鏈生態系統。

一般指導方針和良好作法

使用 CDN 是將應用程式負載降到最低,並將可用性和效能最大化的好方法。 請考慮針對應用程式使用的所有適當內容和資源採用此策略。 設計使用 CDN 的策略時,請考慮下列各節中的要點。

部署

如果您未將靜態內容包含在應用程式部署套件或程式中,可能需要與應用程式獨立布建和部署。 請考慮這如何影響您用來管理應用程式元件和靜態資源內容的版本設定方法。

請考慮使用組合和縮製技術來減少用戶端的負載時間。 統合會將多個檔案合併成單一檔案。 縮製會從腳本和 CSS 檔案中移除不必要的字元,而不會改變功能。

如果您需要將內容部署至其他位置,這將會是部署程式中的額外步驟。 如果應用程式更新 CDN 的內容,可能是定期或回應事件,則必須將更新的內容儲存在任何其他位置,以及 CDN 的端點。

請考慮如何處理本機開發及測試何時預期會從CDN提供一些靜態內容。 例如,您可以將內容預先部署至 CDN,作為建置腳本的一部分。 或者,使用編譯指示詞或旗標來控制應用程式載入資源的方式。 例如,在偵錯模式中,應用程式可以從本機資料夾載入靜態資源。 在發行模式中,應用程式會使用CDN。

請考慮檔案壓縮的選項,例如 gzip (GNU zip)。 載入 Web 應用程式或直接在 CDN 的邊緣伺服器上執行壓縮, 可以在源伺服器上執行壓縮。 如需詳細資訊,請參閱 藉由壓縮 Azure CDN 中的檔案來改善效能。

路由和版本控制

您可能需要在不同時間使用不同的CDN實例。 例如,當您部署新版本的應用程式時,您可能會想要使用新的CDN,並保留舊版的CDN(保留舊格式的內容)。 如果您使用 Azure Blob 記憶體做為內容來源,您可以建立個別的記憶體帳戶或個別的容器,並將 CDN 端點指向它。

請勿使用查詢字串來表示CDN上資源連結中的不同應用程式版本,因為從 Azure Blob 記憶體擷取內容時,查詢字串是資源名稱的一部分(Blob 名稱)。 此方法也會影響用戶端快取資源的方式。

當您更新應用程式時部署新版本的靜態內容,如果 CDN 上快取先前的資源,可能會是一項挑戰。 如需詳細資訊,請參閱下面的快取控件一節。

請考慮依國家/地區限制CDN內容存取。 Azure 內容傳遞網路 可讓您根據來源國家或地區篩選要求,並限制傳遞的內容。 如需詳細資訊,請參閱 依國家/地區限制對內容的存取。

快取控件

請考慮如何在系統內管理快取。 例如,在 Azure 內容傳遞網路 中,您可以設定全域快取規則,然後設定特定來源端點的自定義快取。 您也可以藉由在源端傳送快取指示詞標頭,來控制在CDN中執行快取的方式。

如需詳細資訊,請參閱 快取的運作方式。

若要防止在 CDN 上使用物件,您可以從來源刪除物件、移除或刪除 CDN 端點,或在 Blob 記憶體的情況下將容器或 Blob 設為私用。 不過,在存留時間到期之前,不會從CDN 移除專案。 您也可以手動清除 CDN 端點。

安全性

CDN 可以使用CDN所提供的憑證,以及透過標準 HTTP 傳遞內容。 若要避免瀏覽器對混合內容發出警告,您可能需要使用 HTTPS 來要求透過 HTTPS 載入的頁面中顯示的靜態內容。

如果您使用 CDN 來傳遞靜態資產,例如字型檔案,如果您使用 XMLHttpRequest 呼叫從不同的網域要求這些資源,可能會遇到相同的原始原則問題。 許多網頁瀏覽器會防止跨原始來源資源分享 (CORS),除非網頁伺服器設定為設定適當的響應標頭。 您可以使用下列其中一種方法,將 CDN 設定為支援 CORS:

CDN 後援

請考慮您的應用程式如何處理CDN失敗或暫時無法使用。 用戶端應用程式可以在先前的要求期間使用本機快取的資源複本(在用戶端上),或者,如果 CDN 無法使用,您可以包含偵測失敗的程式代碼,而改為向來源要求資源(保留資源的應用程式資料夾或 Azure Blob 容器)。