全部產品
Search
文件中心

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

更新時間:Dec 03, 2024

使用CDN分發OSS中的圖片、視頻、文檔等靜態資源,可以降低流量費用,提升資源載入速度。

方案概覽

使用CDN加速訪問OSS靜態資源的過程如下:

image

要實現CDN加速訪問OSS,只需三步:

  1. 建立私人Bucket:建立私人Bucket用於存放靜態資源,構建了CDN內容分發的基礎,同時有效限制靜態資源未經授權的訪問,保護資料的安全性。

  2. 添加CDN加速網域名稱,並完成網域名稱解析:在CDN控制台添加加速網域名稱後,系統會為加速網域名稱分配一個CNAME記錄。接下來,您需要在您的DNS供應商處配置解析記錄,將加速網域名稱指向CDN提供的CNAME地址。這樣,當使用者通過加速網域名稱訪問內容時,實際上會被重新導向到CDN的邊緣節點。

  3. 開啟私人Bucket回源:開啟私人Bucket回源可以確保CDN能夠從私人Bucket中擷取所需的靜態資源。

前提條件

操作步驟

手動部署

步驟一:建立私人Bucket

  1. 在Object Storage Service控制台的Bucket列表頁面,單擊建立Bucket

  2. 建立 Bucket面板,填寫Bucket名稱,其他參數按下圖所示採用預設配置,然後單擊完成建立

    bucket001.jpg

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

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

  1. 添加網域名稱。

    1. 在CDN管理主控台的添加網域名稱頁面,按以下說明配置各項參數,其他參數採用預設配置,然後單擊下一步

      cdn.jpg

    2. 網域名稱管理頁面,等待網域名稱狀態顯示正常運行時,複製CNAME值,該樣本為oss.example.com.w.kunlunaq.com

  2. 解析網域名稱。

    1. 在Alibaba Cloud DNS控制台的網域名稱解析頁面,單擊已添加網域名稱oss.example.com右側的解析設定,然後單擊添加記錄,按以下說明配置各項參數,其他參數採用預設配置,然後單擊確認

      dns.jpg

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

      ping

步驟三:開啟私人Bucket回源

  1. 在CDN控制台的網域名稱管理列表,單擊目標網域名稱。

  2. 在左側導覽列,單擊回源配置,然後開啟阿里雲OSS私人Bucket回源。

    cdn.jpg

結果驗證

以上步驟部署完成後,需要在已建立的Bucket中上傳檔案,即可體驗通過CDN加速網域名稱訪問OSS資源。

  1. 上傳圖片到已建立的Bucket。

    1. Bucket列表頁面,單擊建立的Bucket名稱。

    2. 檔案清單頁面,單擊上傳文件,選擇需要上傳的靜態資源,例如圖片檔案(dest.jpg),然後按頁面指引完成上傳操作。

  2. 擷取檔案URL。

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

    2. 單擊復制文件 URL,擷取檔案URL。

      • 擷取通過Bucket網域名稱訪問的檔案URL

        通過Bucket網域名稱訪問檔案時,因檔案讀寫權限為私人,您需要擷取帶簽名資訊的檔案URL。

        Dingtalk_20240927113557.jpg

      • 擷取通過CDN加速網域名稱訪問的檔案URL

        通過CDN加速網域名稱訪問檔案時,需要使用不包含簽名資訊的URL訪問。例如,複製的檔案URL為http://oss.example.com/dest.jpg?Expires=1727408333&OSSAccessKeyId=TMP.3********&Signature=eg********,使用不包含簽名資訊的URL為(https://oss.example.com/dest.jpg)。

        dest.jpg

  3. 驗證CDN加速效果。

    使用CloudMonitor的一次性撥測工具HTTP檢測對比通過Bucket網域名稱以及CDN加速網域名稱訪問同一個檔案的載入時間。結果表明,通過CDN加速網域名稱訪問的載入時間為90.04 ms,而通過Bucket網域名稱訪問的載入時間為146.61 ms。相比而言,使用CDN加速網域名稱訪問的速度比通過Bucket網域名稱訪問的速度提升約38%。

    說明

    以上測試資料僅供參考。因不同的網路環境、地理位置等因素,訪問速度提升的比例存在差異。通常而言,如果使用者所在Region距離CDN節點較近,或者網路環境較好,則訪問速度提升的比例可能更高。

    image

建議配置

為了提高加速效能和訪問安全,確保使用者可以快速並安全地擷取以及傳輸資料,您可以根據業務需求,完成以下配置。

啟用HTTPS安全加速服務

CDN支援HTTPS安全加速服務,您可以將HTTPS認證部署至CDN平台,啟用HTTPS安全加速服務,實現用戶端與CDN節點間請求的加密傳輸。具體步驟,請參見配置HTTPS認證

提高快取命中率

  • 緩衝自動重新整理:為確保使用者能夠及時訪問到您在OSS中最新修改的檔案,您可以通過OSS控制台啟用CDN緩衝自動重新整理功能。具體步驟如下:

    1. Bucket列表頁面,單擊目標Bucket名稱。

    2. 在左側導覽列,選擇Bucket配置 > 網域名稱管理,然後單擊支援的操作

      cdn.jpg

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

    重要

    此功能不保證一定能成功提交重新整理任務,也不保證重新整理任務提交的及時性。如果對時效性有要求或需要瞭解重新整理結果,可以使用CDN的重新整理功能,詳情請參見重新整理和預熱資源

  • 合理配置緩衝到期時間

    • 不常更新的靜態檔案(例如,圖片類型、應用下載類型等),建議設定1個月以上。

    • 頻繁更新的靜態檔案(例如,JS、CSS等),根據實際業務情況設定。

    • 動態檔案(例如,PHP、JSP、ASP等),建議設定為0s,即不緩衝。

    具體步驟,請參見配置緩衝到期時間

防止網站資源被非法盜用

Referer防盜鏈是基於HTTP要求標頭中Referer欄位(例如Referer黑白名單)來設定存取控制規則,實現對訪客的身份識別和過濾,防止網站資源被非法盜用。配置Referer黑白名單後,CDN會根據名單識別請求身份,允許或拒絕訪問請求。允許訪問請求,CDN會返回資源連結;拒絕訪問請求,CDN會返回403響應碼。更多資訊,請參見配置Referer防盜鏈

避免網站資源被惡意下載

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

提高CDN節點回源下載檔案的效率

開啟Range回源功能後,CDN節點請求來源站點OSS上的大檔案時,OSS將按照CDN請求的Range範圍返回分區內容,可減少回源流量消耗、減少資源回應時間。適用於音視頻等較大檔案的內容分發,不適用於圖片小檔案等業務,圖片業務加速時無需配置。更多資訊,請參見配置Range回源

常見問題

如何判斷是否命中CDN緩衝?

  • 未命中CDN節點緩衝

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

    outside.jpg

  • 命中CDN節點緩衝

    後續訪問命中CDN節點緩衝後,X-Cache欄位傳回值將以HIT開頭,表明來源站點的資源已緩衝到CDN節點。

    outside.jpg

為什麼通過CDN可以提升OSS靜態資源的傳輸速度?

CDN通過在全球多個地區部署緩衝節點,當使用者請求訪問OSS中的靜態資源時,CDN會將使用者的請求路由至距離使用者最近的緩衝節點,無需遠距離請求直接存取OSS資源。這樣可以大幅減少資料轉送的距離,降低網路延遲,提升訪問速度。

為什麼通過CDN訪問OSS可以降低流量成本?

通過Bucket外網網域名稱直接請求OSS資源會產生OSS外網流出流量費用。相比CDN加速訪問OSS模式,CDN可將OSS靜態資源緩衝至遍布全球的邊緣節點上,當使用者通過CDN加速網域名稱訪問OSS資源時,最近的CDN節點會將緩衝的資源返回給使用者,無需回源OSS,這一過程會產生CDN下行流量費用。相較於OSS外網流出流量,CDN下行流量單價更低。因此,通過CDN訪問OSS資源可以有效降低流量成本。更多資訊,請參見CDN加速OSS計費說明

為什麼通過CDN加速網域名稱訪問OSS私人檔案時報錯?

  • 問題原因

    開啟私人Bucket回源功能後,CDN節點將會在回源請求中添加一個名稱為Authorization的Header,其值為OSS私人Bucket鑒權簽名資訊。回源OSS的單個請求不能同時在Header以及URL請求參數中均攜帶簽名。因此,當回源請求中攜帶了Authorization要求標頭後,檔案URL中不能攜帶用於簽名認證的參數,例如ExpiresSignatureOSSAccessKeyId等,否則將會導致OSS鑒權失敗。

  • 解決方案

    使用不包含簽名資訊的URL訪問。例如,原檔案URL為https://oss.example.com/outside.jpg?Expires=1700628094&OSSAccessKeyId=TMP.3********&Signature=B********,使用不包含簽名資訊的URL(https://oss.example.com/outside.jpg)訪問。

開啟回源私人Bucket後,觸發靜態網站首頁的請求報錯?

具體原因和解決方案請參見為什麼CDN回源私人Bucket時,不支援訪問Bucket的預設首頁?