Skip to content
所有文章 ‹ Part 05 of 18 · Cache 不是方塊,是一條鏈
工程 · 2 min read

CDN 名詞一頁表

一頁看懂 CDN 名詞:edge、tiered cache、hit、miss、refresh hit、offload、cache key 和 purge,並標出它們在 request 路上的位置。

我讀 CDN 文件時卡住,多半不是概念難,而是名詞沒對上。下面這張表是我的對照表。

先看一個 request 會經過哪些元件,再看每個名詞落在哪裡。

client(browser) request + header← 02 edge servercache ①:有新鮮副本就直接回← 01 miss,或過期要 refresh← 04 tiered cachecache ②:多個 edge 共用一份 miss load balancerorigin 的入口,依 host/path/header 選後端← 03 storage只回傳檔案(bucket) compute程式,可以改寫內容 ...
一個請求會先經過兩層 cache,最後才由 load balancer 選出真正做事的後端。
  • 越往下走越慢、越貴。Cache 的工作就是讓 request 停在越上面越好。
  • 有些平台在 load balancer 上還有 cache ③,這個系列叫它 LB cache。問題就出在那裡(Bypass header 只在有規則的地方有效)。
名詞意思
Tiered cacheedge 後面的第二層 CDN server,多個 edge 共用。Akamai 叫 parent
Hitcache 有新鮮副本,直接回應
Misscache 沒有副本,去 origin 拿完整檔案
Refresh hit副本過期,問 origin 拿到 304,再回副本
TTL副本可以保持新鮮多久
Stale超過 TTL 的副本
Offloadcache 不經過 origin 就回應的比例
Cache keycache 用來分辨兩個 request 是否同一個檔案的鍵
Purge叫 cache 丟掉或標記過期某個副本
Negative caching連 404 這類錯誤也存起來一小段時間
  • Cache key 預設包含完整 URL。Query string 每次不同,同一個檔案就會存成很多份。
  • CDN 報表把 refresh hit 算成 hit,但它其實跑了一趟 origin。我後來改用「首位元組時間 ≥ 50 ms」判斷 request 有沒有離開 edge(症狀:HTML、CSS、JS 一直跑回 origin)。

報表上的 hit 不一定沒離開 edge。先對齊名詞,再相信數字。

延伸閱讀:CDN 是什麼、Cache header:誰設定,誰讀取、症狀:HTML、CSS、JS 一直跑回 origin、我學到的:cache 不是一個方塊,是一條鏈。或回到系列總覽。

↑↓ 移動 ↵ 開啟 esc 關閉