1. 程式人生 > 其它 >華為雲CDN如何提高快取命中率

華為雲CDN如何提高快取命中率

背景資訊

CDN快取命中率低,會導致源站壓力大,靜態資源訪問效率低。您可以針對導致CDN快取命中率低的具體原因,選擇對應的優化策略,來提高CDN的快取命中率。CDN快取命中率包括流量命中率和請求命中率。

  • 流量命中率 = 命中快取產生的流量 / 請求總流量

  • **請求命中率 **= 命中快取的請求數 / 請求總數

    說明:

    流量命中率越低,回源流量越大,源站的流出流量越大,源站頻寬資源佔用越大,其代表了源站伺服器收到的負載壓力,請重點關注流量命中率。

檢視快取命中率

您可以登入CDN控制檯檢視流量命中率和請求命中率。

  1. 登入華為雲控制檯,在控制檯首頁中選擇“CDN與智慧邊緣 > CDN”,進入CDN控制檯。

  2. 在左側選單欄中,選擇“統計分析”。

  3. 分別選擇“使用量統計”和“訪問情況統計”檢視“流量命中率”和“請求命中率”。

    **圖1 **流量命中率

    **圖2 **請求命中率

優化快取命中率

  1. 合理設定快取過期時間

    CDN加速的本質是快取加速,把源站資源快取在遍佈全球的節點上,使用者可以就近從邊緣節點獲取資源,從而達到加速的效果。您可以通過CDN控制檯合理設定快取過期時間來提高快取命中率,建議如下:

    • 對於不經常更新的靜態檔案(如圖片型別、應用下載型別等),建議您將快取時間設定為1個月以上。
    • 對於頻繁更新的靜態檔案(如JS、CSS等),您可以根據實際業務情況設定。
    • 對於動態檔案(如PHP、JSP、ASP等),建議您將快取時間設定為0,即不快取。

    詳細的設定步驟和注意事項請見如何設定快取過期時間

    說明:

    • 如果源站設定了s-maxage=0、max-age=0、no-cache、no-store、private,CDN側同時開啟了“快取遵循源站”功能(此功能預設關閉),CDN節點將無法快取源站資源,導致頻繁回源。
    • 如果您的源站有多個主機,某個相同的資源在多個主機中的Last-modified、Etag、Content-Length不一致,CDN節點將無法快取該資源,導致重複回源。
    • 如果源站資源更新,請重新整理資源對應的URL,以保證使用者可以獲得最新的資源。
    • 如果您修改了快取規則
      • 新的規則僅對後面快取的資源生效,已經快取的資源需要等快取過期後,再次快取才會遵循新的快取規則。
      • 如果您想要立即生效,請在修改快取規則後執行快取重新整理操作。
  2. 開啟過濾URL引數

    目前大多數的網頁請求都攜帶URL引數資訊,引數以“?”開始,如果引數沒有包含重要資訊(如版本資訊等),是否攜帶該引數訪問不會影響使用者獲得正確的資源,可以選擇開啟“忽略URL引數”功能,提高快取命中率,提升分發效率,詳見URL引數

    典型應用

  3. 預熱URL

    CDN可以通過快取預熱將源站資源主動快取到CDN節點,使用者訪問時就能直接從CDN節點獲取到最新的資源,詳見快取預熱

    當您的域名初次接入CDN加速、活動釋出時您可以將源站資源預熱到CDN節點,使用者訪問資源時直接從CDN節點獲取,從而提升CDN的快取命中率。

    典型場景

    • 初次接入CDN:域名初次接入CDN時,節點暫未快取源站資源,此時,您可以將源站資源預熱至CDN節點。後續使用者訪問資源將直接從就近的CDN節點獲取資源,提升訪問速度。
    • 安裝包釋出新版本安裝包或是升級包釋出前,提前將資源預熱至CDN節點。正式上線後,海量使用者的下載請求將直接由全球加速節點響應,提升下載速度的同時,大幅度降低源站壓力。
    • 運營活動運營活動釋出前,提前將活動頁涉及到的靜態資源預熱至CDN節點。活動開始後,使用者訪問中所有靜態資源均由加速節點響應,海量頻寬儲備保障使用者服務可用性,提升使用者體驗。
  4. 開啟Range回源

    Range回源是指源站在收到CDN節點回源請求時,根據HTTP請求頭中的Range資訊返回指定範圍的資料給CDN節點。Range回源能有效縮短大檔案的分發時間,提升回源效率,提高快取命中率,詳見Range回源

    典型場景

    • 未開通Range時,使用者想觀看指定片段的視訊,而CDN回源時需要獲取整個視訊,所以回源流量大於響應給使用者的流量,從而造成快取命中率降低。開啟Range回源後,CDN將分片回源獲取資源返回給使用者,從而提升快取命中率。
  5. 其它

    • 快取資源需要更新時,儘量避免重新整理目錄

      當源站某個資源更新時,一般需要通過重新整理相應的URL來強制節點快取資源過期。重新整理目錄會將目錄內所有的資源全部置為過期,使用者下次訪問時將無法命中快取,全部回源站請求資源,因此儘量避免重新整理整個目錄,尤其慎重重新整理根目錄。

    • 避免在URL中攜帶動態引數

      如果您的URL中包含動態引數,如時間戳,CDN無法快取該資源,導致頻繁回源。

判斷URL是否命中快取

  1. 在瀏覽器Chrome上,按F12。
  2. 選擇“Network”。
  3. 檢視指定URL的響應頭,檢視頭部資訊,進行如下判斷:
    • 如果有“x-hcs-proxy-type”頭部,值為“1”即命中快取,值為“0”即未命中快取,不再檢視其它頭部;
    • 如果無“x-hcs-proxy-type”頭部,而有“X-Cache-Lookup”頭部,值為“Hit From MemCache”、“Hit From Disktank”或“Hit From Upstream”即為命中快取,其它值表示未命中快取,不再檢視其它頭部;
    • 如果同時無“x-hcs-proxy-type”、“X-Cache-Lookup”頭部,有“age”頭部,則值大於“0”即命中快取,值為“0”即未命中快取。

本文由華為雲釋出。