使用CDN分發OSS中的圖片、視頻、文檔等靜態資源,可以降低流量費用,提升資源載入速度。
方案概覽
使用CDN加速訪問OSS靜態資源的過程如下:
要實現CDN加速訪問OSS,只需三步:
建立私人Bucket:建立私人Bucket用於存放靜態資源,構建了CDN內容分發的基礎,同時有效限制靜態資源未經授權的訪問,保護資料的安全性。
添加CDN加速網域名稱,並完成網域名稱解析:在CDN控制台添加加速網域名稱後,系統會為加速網域名稱分配一個CNAME記錄。接下來,您需要在您的DNS供應商處配置解析記錄,將加速網域名稱指向CDN提供的CNAME地址。這樣,當使用者通過加速網域名稱訪問內容時,實際上會被重新導向到CDN的邊緣節點。
開啟私人Bucket回源:開啟私人Bucket回源可以確保CDN能夠從私人Bucket中擷取所需的靜態資源。
前提條件
操作步驟
手動部署
步驟一:建立私人Bucket
在Object Storage Service控制台的Bucket列表頁面,單擊建立Bucket。
在建立 Bucket面板,填寫Bucket名稱,其他參數按下圖所示採用預設配置,然後單擊完成建立。
步驟二:添加網域名稱並解析網域名稱
此處以加速網域名稱oss.example.com
為例介紹具體操作。您可以根據自己的實際情況來選擇加速網域名稱,包括主網域名稱、次層網域、泛網域名稱等。
步驟三:開啟私人Bucket回源
在CDN控制台的網域名稱管理列表,單擊目標網域名稱。
在左側導覽列,單擊回源配置,然後開啟阿里雲OSS私人Bucket回源。
結果驗證
以上步驟部署完成後,需要在已建立的Bucket中上傳檔案,即可體驗通過CDN加速網域名稱訪問OSS資源。
上傳圖片到已建立的Bucket。
擷取檔案URL。
在檔案清單頁面,單擊檔案操作列的詳情。
單擊復制文件 URL,擷取檔案URL。
擷取通過Bucket網域名稱訪問的檔案URL
通過Bucket網域名稱訪問檔案時,因檔案讀寫權限為私人,您需要擷取帶簽名資訊的檔案URL。
擷取通過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
)。
驗證CDN加速效果。
使用CloudMonitor的一次性撥測工具HTTP檢測對比通過Bucket網域名稱以及CDN加速網域名稱訪問同一個檔案的載入時間。結果表明,通過CDN加速網域名稱訪問的載入時間為90.04 ms,而通過Bucket網域名稱訪問的載入時間為146.61 ms。相比而言,使用CDN加速網域名稱訪問的速度比通過Bucket網域名稱訪問的速度提升約38%。
說明以上測試資料僅供參考。因不同的網路環境、地理位置等因素,訪問速度提升的比例存在差異。通常而言,如果使用者所在Region距離CDN節點較近,或者網路環境較好,則訪問速度提升的比例可能更高。
建議配置
為了提高加速效能和訪問安全,確保使用者可以快速並安全地擷取以及傳輸資料,您可以根據業務需求,完成以下配置。
啟用HTTPS安全加速服務
CDN支援HTTPS安全加速服務,您可以將HTTPS認證部署至CDN平台,啟用HTTPS安全加速服務,實現用戶端與CDN節點間請求的加密傳輸。具體步驟,請參見配置HTTPS認證。
提高快取命中率
緩衝自動重新整理:為確保使用者能夠及時訪問到您在OSS中最新修改的檔案,您可以通過OSS控制台啟用CDN緩衝自動重新整理功能。具體步驟如下:
在Bucket列表頁面,單擊目標Bucket名稱。
在左側導覽列,選擇
,然後單擊支援的操作。下拉選擇需要開啟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節點緩衝,需要向來源站點請求資源。
命中CDN節點緩衝
後續訪問命中CDN節點緩衝後,X-Cache欄位傳回值將以HIT開頭,表明來源站點的資源已緩衝到CDN節點。
為什麼通過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中不能攜帶用於簽名認證的參數,例如
Expires
、Signature
、OSSAccessKeyId
等,否則將會導致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的預設首頁?