Range分片,指邊緣安全加速 ESA節點在回源的HTTP請求里面攜帶了Range信息,源站在收到回源請求時,根據HTTP請求頭中的Range信息返回指定范圍的內容數據給邊緣安全加速 ESA節點。Range分片可有效提高文件分發效率,提高緩存命中率,減少回源流量消耗和源站壓力,并且提升資源響應速度。
工作原理
Range是HTTP請求頭之一,可用來指定需獲取的內容的范圍。例如,Range: bytes=0-100
表示回源請求該文件的前101個字節的數據內容。
開啟Range分片功能后,邊緣安全加速 ESA收到用戶的請求時,如果邊緣安全加速 ESA節點上未緩存該資源或資源已過期,邊緣安全加速 ESA節點回源會采用Range請求,從源站分段獲取用戶需要的部分資源并緩存到邊緣安全加速 ESA節點上。
開啟Range分片的工作原理如下圖所示:
前提條件
開啟Range分片前需確認源站是否支持Range請求,即HTTP請求頭中包含Range字段,并且源站能夠響應正確的206狀態碼。如果源站不支持Range請求,開啟Range分片將導致資源無法緩存。
操作步驟
登錄ESA控制臺。
在左側導航欄,單擊站點管理。
在站點管理頁面,單擊目標站點名稱,或對應站點操作列的詳情。
在左側導航欄,選擇
。點擊新建規則,填寫規則名稱。
在當請求匹配以下規則時...區域設置要匹配的用戶請求特征,單擊Range分片區域的配置。
選擇跟隨客戶端Range請求(默認配置)、不使用Range回源或開啟Range回源(大文件場景推薦配置)Range分片。
選項
描述
示例
跟隨客戶端Range請求(默認配置)
默認為跟隨客戶端Range請求(默認配置)狀態,當客戶端使用Range請求ESA節點時,邊緣安全加速 ESA節點才會采用Range請求回源。邊緣安全加速 ESA節點第一次回源請求會按照用戶請求中的Range大小向上取整回用戶源站,后面全部按照512 KB分片大小回用戶源站。
例如,客戶端向ESA節點發起的請求中含有
range:0-100
,則ESA節點會按照512 KB分片大小向源站發起請求,源站響應了這個512 KB分片大小的內容后,ESA節點會緩存該分片,并將range:0-100
的內容響應給客戶端。不使用Range回源
開啟不使用Range回源后,無論客戶端是否使用Range請求邊緣安全加速 ESA節點,邊緣安全加速 ESA節點回源時都會請求整個文件,在大文件場景下的文件分發效率較低。
例如,客戶端向ESA節點發起的請求中含有
range:0-100
,則ESA節點向源站發起的請求中不會攜帶Range參數。源站會響應ESA節點完整文件(假設完整文件大小為10 MB,源站就會響應10 MB的文件給ESA節點),ESA節點收到源站響應的文件后,會將文件緩存下來,同時響應客戶端range:0-100
的內容。開啟Range回源(大文件場景推薦配置)
開啟Range回源(大文件場景推薦配置)后,無論客戶端是否使用Range請求邊緣安全加速 ESA節點,邊緣安全加速 ESA節點都會采用Range請求回源。邊緣安全加速 ESA節點的所有回源Range請求都按照512 KB分片大小回用戶源站。
無
點擊確定。
HTTP Range范圍超出有效區間的兼容性配置
當阿里云OSS作為源站時,默認情況下,如果HTTP Range請求不合法或者指定范圍超出有效區間,會導致Range不生效,響應狀態碼為200,并傳送整個Object內容,此時會影響回源獲取文件的響應速度。
為了解決該問題,阿里云OSS產品提供了兼容性配置方式。使用HTTP Range時,通過增加回源HTTP請求頭x-oss-range-behavior:standard
,可以改變指定HTTP Range范圍超出有效區間時OSS的行為。行為改變的示例如下:
此處假設Object資源大小為1000字節,Range有效區間為0~999。如通過HTTP Range請求獲取大文件的部分內容時,因選取了無效的范圍,導致OSS返回InvalidRange錯誤碼,請參見OSS返回416錯誤進行解決,詳細錯誤信息如下:The requested range cannot be satisfied
。
Range: bytes=500-2000
:末字節超出有效區間,返回500~999字節范圍內容。Range: bytes=1000-2000
:首字節超出有效區間,返回錯誤416 (InvalidRange)
。Range: bytes=1000-
:首字節超出有效區間,返回錯誤416 (InvalidRange)
。Range: bytes=-2000
:指定范圍超出有效區間,返回0~999字節,即完整的文件內容。
具體請求示例請參見如何通過HTTP Range請求分段獲取OSS資源。
建議在大文件(平均單個文件大小在20 MB以上)內容分發場景下,邊緣安全加速 ESA回源OSS時都進行該項配置。
如果在阿里云OSS源站上開啟了訪問鑒權功能,并且由客戶端來實現回源請求的簽名計算,那么客戶端在簽名計算的時候需要把回源請求頭
x-oss-range-behavior:standard
加入簽名計算(由于阿里云OSS在計算簽名的時候,會將所有帶x-oss-
前綴的請求頭都加入計算,如果客戶端簽名計算的時候沒有把x-oss-range-behavior:standard
加入簽名計算,會導致阿里云OSS源站簽名計算不一致,拒絕回源請求)。