工程 · 2 min read
CDN 名詞一頁表
一頁看懂 CDN 名詞:edge、tiered cache、hit、miss、refresh hit、offload、cache key 和 purge,並標出它們在 request 路上的位置。
我讀 CDN 文件時卡住,多半不是概念難,而是名詞沒對上。下面這張表是我的對照表。
先看一個 request 會經過哪些元件,再看每個名詞落在哪裡。
- 越往下走越慢、越貴。Cache 的工作就是讓 request 停在越上面越好。
- 有些平台在 load balancer 上還有 cache ③,這個系列叫它 LB cache。問題就出在那裡(Bypass header 只在有規則的地方有效)。
| 名詞 | 意思 |
|---|---|
| Tiered cache | edge 後面的第二層 CDN server,多個 edge 共用。Akamai 叫 parent |
| Hit | cache 有新鮮副本,直接回應 |
| Miss | cache 沒有副本,去 origin 拿完整檔案 |
| Refresh hit | 副本過期,問 origin 拿到 304,再回副本 |
| TTL | 副本可以保持新鮮多久 |
| Stale | 超過 TTL 的副本 |
| Offload | cache 不經過 origin 就回應的比例 |
| Cache key | cache 用來分辨兩個 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 不是一個方塊,是一條鏈。或回到系列總覽。