全部產品
Search
文件中心

Object Storage Service:使用CDN加速OSS資源訪問

更新時間:Aug 17, 2024

CDN通過將OSS資源緩衝至就近的CDN節點實現加速訪問OSS。相比直接存取OSS資源,CDN具有更高的頻寬上限,可有效避免OSS下行頻寬和Bucket地區的限制。通過CDN節點進行分發,能夠有效減少訪問延遲。

使用情境

使用CDN加速訪問OSS可以提升使用者訪問速度,改善使用者體驗。以下是使用CDN加速訪問OSS的常見情境:

  • 線上播放音視頻檔案

    如果您通過OSS提供音視頻線上播放等服務,CDN可以將音視頻內容分發到全球各地的Edge Server,降低音視頻播放的緩衝時間,提供更好的觀看體驗。

  • 高並發訪問

    當您的網站或應用程式遇到高並發訪問量時,CDN可以分發使用者請求到多個Edge Server上,實現負載平衡,減輕原始伺服器的壓力,並且保持較快的響應速度。

  • 大檔案傳輸

    如果您需要通過OSS訪問或下載較大的檔案,結合CDN可以提供更高的頻寬和傳輸速度,減少檔案下載時間。

  • 全球使用者

    如果您的網站或應用程式的使用者分布在全球各地,使用CDN可以將內容緩衝在離使用者更近的伺服器節點上,降低資料轉送的延遲,提高訪問速度。

背景資訊

為了更好地應對訪問量的增長,並避免效能瓶頸,建議您將待用資料儲存到OSS中,並通過CDN加速OSS的訪問。這將使傳統的動態資源和靜態資源不分離的網站架構變為動態資源和靜態資源分離的雲上網站架構。通過這種架構改造,可以大大提高網站的穩定性和可靠性,同時為網站的訪問速度帶來顯著的提升。

傳統網站架構

如下圖所示,傳統網站架構下,動態資源和靜態資源不分離,隨著訪問量的增長,效能會成為瓶頸。

該架構的要點如下:

  • 將動態資源和靜態資源都存放在伺服器上。

  • 使用者直接存取伺服器請求資料。

該架構有以下劣勢:

  • Web伺服器高負載

    動態資料和待用資料共用一台伺服器,當網站訪問量增加時,伺服器可能無法承受高負載,從而導致網站響應速度變慢,甚至崩潰。

  • 儲存空間難以擴容

    靜態資源的儲存空間會受到伺服器硬碟容量的限制。當儲存空間不足時,要對伺服器硬碟進行擴容或升級,需要投入更多的資金和時間成本。

雲上網站架構

如下圖所示,雲上網站架構下,動態資源和靜態資源分離,能夠解決海量使用者訪問的效能瓶頸問題。

該架構的要點如下:

  • 將動態資源例如Web程式、資料庫等存放在Elastic Compute Service上。

  • 將靜態資源例如圖片、音視頻、靜態指令碼等存放在Object Storage Service上。

  • 將OSS作為CDN的來源站點,通過CDN加速分發,使使用者通過CDN節點就近獲得檔案。

該架構有以下優勢:

  • 降低了Web伺服器負載

    OSS的資源緩衝至就近的CDN節點,通過CDN節點進行分發,縮短了網路傳輸距離,加快了使用者的調用速度。

  • 支援海量儲存

    OSS的儲存空間彈性無限擴充,您無需考慮儲存架構升級。

  • 降低了儲存費用和流量費用

    使用該架構會產生OSS的儲存費用、CDN的下行流量費用以及極少量的回源流量費用。其中OSS的儲存費用僅為ECS雲端硬碟費用的一半,而CDN流量的單價約為OSS外網流量單價的30%~40%。

    說明

    關於OSS儲存費用的更多資訊,請參見儲存費用

費用說明

將OSS作為CDN來源站點時,可能會產生CDN下行流量費用以及OSS流出到CDN流量費用。更多資訊,請參見CDN加速OSS計費說明

前提條件

  • 已建立一個OSS Bucket,且上傳了相關資源。具體操作,請參見上傳檔案

  • 已開通阿里雲CDN服務。具體操作,請參見開通CDN服務

  • 登入次層網域。支援綁定非阿里雲註冊的網域名稱。如果您還未註冊網域名稱,您可以在阿里雲網域名稱服務 (DNS)平台註冊網域名稱。具體步驟,請參見註冊網域名稱

  • 如果要綁定的Bucket在中國內地,確保網域名稱已備案,且帳號已實名認證。如何備案和實名認證,請參見ICP備案流程國際站帳號實名登記常見問題

操作步驟

此處以加速網域名稱oss.example.com為例介紹具體操作。您可以根據自己的實際情況來選擇加速網域名稱,包括主網域名稱、次層網域、泛網域名稱等。

步驟一:添加網域名稱並解析網域名稱

快速部署

您可以使用Resource Orchestration Service一鍵添加需要加速的網域名稱,並將網域名稱解析至CDN加速網域名稱,從而快速添加和解析網域名稱。

  1. 開啟一鍵配置模板連結

  2. 資源編排 ROS控制台的建立資源棧頁面的配置參數步驟:

    1. 選擇需要加速訪問的地區,例如中國內地domestic

    2. 填寫加速網域名稱為需要加速的網域名稱,例如oss.example.com

    3. 填寫來源站點資訊為OSS Bucket對應的外網網域名稱,例如examplebucket.oss-cn-hangzhou.aliyuncs.com,然後單擊創建

    資源棧的資源棧資訊頁簽狀態顯示建立中

  3. 資源棧的狀態顯示建立成功後,單擊輸出頁簽,查看一鍵部署的Cname值。

手動部署

  1. 添加網域名稱。

    1. 登入CDN管理主控台,選擇網域名稱管理

    2. 單擊添加網域名稱,設定以下參數:

      • 加速地區:選擇僅中國內地

      • 加速網域名稱:輸入加速網域名稱,該樣本為oss.example.com

      • 業務類型:選擇圖片小檔案

      • 來源站點資訊:單擊新增來源站點資訊,然後選擇OSS網域名稱和需要加速的OSS網域名稱(即之前建立的OSS Bucket對應的網域名稱),其他參數保持預設值。單擊確定

    3. 仔細閱讀並確認同意後,選中我理解並同意以上合規承諾資料跨境合規承諾,單擊下一步,然後單擊返回網域名稱管理

    4. 等到網域名稱狀態為正常運行時,複製CNAME值,該樣本為oss.example.com.w.kunlunaq.com

  2. 解析網域名稱。

    1. 登入DNS管理主控台,選擇網域名稱解析

    2. 單擊已添加網域名稱oss.example.com右側的解析設定

    3. 在解析設定頁面,單擊添加記錄

    4. 添加記錄面板,配置以下參數:

      • 記錄類型:選擇CNAME

      • 主機記錄:輸入oss

      • 記錄值:輸入之前複製的CNAME值oss.example.com.w.kunlunaq.com

      • 其他參數:保留預設值。

    5. 單擊確認。等待幾分鐘後,使用ping命令查看加速網域名稱是否生效。下圖表示已生效。

      ping

步驟二:開啟CDN緩衝自動重新整理並設定緩衝到期時間

  1. 開啟CDN緩衝自動重新整理。

    1. 進入OSS控制台,單擊左側導覽列的Bucket列表,然後選擇對應的Bucket。

    2. 在左側導覽列,選擇Bucket配置 > 網域名稱管理,單擊目標網域名稱右側的未綁定,根據提示完成綁定。

    3. 單擊開啟加速網域名稱對應的CDN緩衝自動重新整理下的支援的操作

    4. 下拉選擇需要開啟CDN緩衝自動重新整理操作對應的API介面名稱,然後單擊確定

  2. 按目錄或檔案尾碼名配置靜態資源的緩衝到期時間。

    緩衝到期時間指來源站點資源在CDN節點緩衝的時間長度達到預設時間時,資源將會被CDN節點標記為失效資源。如果用戶端向CDN節點請求的資源已經失效,CDN會回來源站點擷取最新資源並緩衝到CDN節點。具體操作,請參見配置緩衝到期時間

步驟三:通過加速網域名稱訪問OSS檔案

  1. 查看檔案URL。

    1. 進入OSS控制台,單擊左側導覽列的Bucket列表,然後選擇對應的Bucket。

    2. 檔案清單頁面,單擊檔案操作列的詳情

    3. 在檔案的詳情面板,從自有網域名稱列表中選擇加速網域名稱,該樣本為oss.example.com。此時,您可以看到檔案URL已變為以加速網域名稱開頭的URL。

    4. 配置HTTPS認證。

      為實現用戶端和全站加速節點之間請求的HTTPS加密,保障資料轉送的安全性,您需要使用HTTPS進行訪問。使用HTTPS訪問前,您需要配置HTTPS認證。具體操作,請參見配置HTTPS認證

  2. 通過瀏覽器訪問檔案URL。

    訪問公用讀取檔案

    1. 單擊複製檔案URL

      2.jpg

    2. 訪問檔案URL。

      說明

      通過開發人員工具檢查發現,表示CDN緩衝策略實際效果的X-Cache欄位傳回值以MISS開頭,表明首次訪問未命中CDN節點緩衝,需要向來源站點請求資源。後續訪問命中CDN節點緩衝後,X-Cache欄位傳回值將以HIT開頭,表明來源站點的資源已緩衝到CDN節點。

      outside.jpg

    訪問私人檔案

    1. 開啟OSS私人Bucket回源。具體操作,請參見開啟私人Bucket回源

      重要

      開啟私人Bucket回源功能後,CDN節點將會在回源請求中添加一個名稱為Authorization的Header,其值為OSS私人Bucket鑒權簽名資訊。

    2. 單擊複製檔案URL

      2.jpg

    3. 刪除檔案URL中包含的簽名資訊。

      即原檔案URL為https://oss.example.com/outside.jpg?Expires=1700628094&OSSAccessKeyId=TMP.3********&Signature=B********,刪除簽名資訊後檔案URL為https://oss.example.com/outside.jpg

      重要

      回源OSS的單個請求不能同時在Header以及URL請求參數中均攜帶簽名。因此,當回源請求中攜帶了Authorization要求標頭後,檔案URL中不能攜帶用於簽名認證的參數,例如ExpiresSignatureOSSAccessKeyId等,否則將會導致OSS鑒權失敗。更多資訊,請參見0002-00000039

    4. 訪問已刪除簽名資訊的檔案URL。

      說明

      通過開發人員工具檢查發現,表示CDN緩衝策略實際效果的X-Cache欄位傳回值以MISS開頭,表明首次訪問未命中CDN節點緩衝,需要向來源站點請求資源。後續訪問命中CDN節點緩衝後,X-Cache欄位傳回值將以HIT開頭,表明來源站點的資源已緩衝到CDN節點。

      outside.jpg

  3. (可選)為避免OSS資源被盜刷,您需要通過CDN配置Referer防盜鏈或者URL鑒權。

    • Referer防盜鏈

      Referer防盜鏈是基於HTTP要求標頭中Referer欄位(例如Referer黑白名單)來設定存取控制規則,實現對訪客的身份識別和過濾,防止網站資源被非法盜用。更多資訊,請參見配置Referer防盜鏈

    • URL鑒權

      通過CDN分發的內容預設為公開資源,使用者擷取URL後均可訪問。為防止網站資源被惡意下載盜用,您還可以採用URL鑒權,自行配置校正鑒權URL中的加密串和時間戳記,更安全有效地保護來源站點資源。更多資訊,請參見配置URL鑒權

相關文檔

  • 開啟回源私人Bucket後,觸發靜態網站首頁的請求報錯。具體原因和解決方案請參見為什麼CDN回源私人Bucket時,不支援訪問Bucket的預設首頁?

  • 當您的業務接入阿里雲CDN後,需要跨域共用或者訪問資源時,您可以通過節點HTTP回應標頭來實現跨域訪問。如果使用OSS作為來源站點,且OSS與CDN同時配置CORS,則CDN的CORS配置將覆蓋OSS的CORS配置。更多資訊,請參見配置跨域資源共用

  • 如果CDN節點上未緩衝使用者請求的資源或資源已到期,希望在CDN回源時從來源站點OSS分段擷取使用者需要的部分資源並緩衝到CDN節點上,有效提高內容分發效率,您可以配置Range回源。更多資訊,請參見配置Range回源