影片和下載站為什麼慢?CDN分片快取與Range

2026-10-24 · 技術

影片拖動卡頓、下載斷點續傳出問題,多半與Range請求和快取分片策略有關。本文解釋邊緣節點如何按位元組區間取內容、分片大小為何影響回源量,並給出四項運營側可調的最佳化。

做影片站和下載站的人常遇到一種怪現象:首頁開啟很快,但影片一拖動進度條就卡,或者大檔案下載走到一半速度驟降。這類問題八成不在頻寬總量,而在取位元組的方式上。 要理解它,先看一個請求頭:Range。播放器拖動進度條時並不會重新下載整個檔案,而是告訴伺服器只要第 150 到 250 兆這段位元組。支援該能力的伺服器返回 206 Partial Content,並在響應頭裡標明返回的是哪一段。下載工具的斷點續傳、安裝包的增量更新、播放器的快速起播,全靠這套機制。 CDN 邊緣節點因此要做一件比較麻煩的事:把客戶端要的零碎區間,變成對源站的一次次請求,再把結果組裝回去。這裡的分片策略直接決定體驗和成本。 傳統做法是按固定分片切檔案。分片設得小,源站會被大量小請求打滿,節點還要在記憶體裡合併這些碎片;分片設得大,客戶端只要幾兆,節點卻可能回源拉走一大塊,多出來的流量在源站和節點之間來回搬運,使用者可能早就退出播放了。更麻煩的是分片大小往往寫在快取鍵裡,中途調整會導致快取整體失效。 近一年主流 CDN 的做法在往按儲存塊對齊的方向演進:節點本來就把檔案按固定大小的塊存在磁碟上用於支援斷點下載,回源時也直接按塊取,節點內部再按客戶端要的位元組區間裁剪響應。這樣過取仍然存在,但上限被固定住了,不再取決於運營人員拍腦袋設的分片引數。對使用方來說,結論很直接:選 CDN 時可以問一句“Range 請求怎麼處理、分片是不是可調”,答案能反映這家節點的實現成熟度。 除了等廠商升級,運營側有四件事可以自己做。 一是切片要合理。HLS 用短分片能加快起播,但分片過短會讓請求數暴漲,通常幾秒一片比較平衡,並與關鍵幀對齊。 二是熱門檔案提前預熱。新上的劇集、版本包在上線前推到邊緣,避免首波使用者全打到源站。 三是快取鍵要乾淨。URL 後面掛隨機引數、時間戳、使用者標識,等於讓每個請求都無法命中,快取形同虛設。 四是關注回源頻寬而不只是總頻寬。回源打滿時,使用者側頻寬再大也沒用。 加速IDC 的 CDN 加速服務覆蓋東南亞 12 個節點,支援大檔案分片快取與 Range 請求,影片、下載、獨立站這類靜態內容為主的業務可以先小流量灰度,再按實際命中率調整策略。