使用CDN分發OSS中的圖片、視頻、文檔等靜態資源,可以降低流量費用,提升資源加載速度。
方案概覽
使用CDN加速訪問OSS靜態資源的過程如下:
要實現CDN加速訪問OSS,只需三步:
創建私有Bucket:創建私有Bucket用于存放靜態資源,構建了CDN內容分發的基礎,同時有效限制靜態資源未經授權的訪問,保護數據的安全性。
添加CDN加速域名,并完成域名解析:在CDN控制臺添加加速域名后,系統會為加速域名分配一個CNAME記錄。接下來,您需要在您的DNS提供商處配置解析記錄,將加速域名指向CDN提供的CNAME地址。這樣,當用戶通過加速域名訪問內容時,實際上會被重定向到CDN的邊緣節點。
開啟私有Bucket回源:開啟私有Bucket回源可以確保CDN能夠從私有Bucket中獲取所需的靜態資源。
前提條件
操作步驟
一鍵部署
點擊一鍵部署通過ROS腳本自動執行創建私有Bucket(或選擇已有Bucket)、添加CDN加速域名,并完成域名解析、開啟私有Bucket回源的所有步驟,實現CDN加速OSS資源訪問。
手動部署
步驟一:創建私有Bucket
在對象存儲OSS控制臺的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加速效果。
使用云監控的一次性撥測工具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的默認首頁?