工程 · 1 min read
Akamai 工具:purge 和 CLI
用 Akamai CLI 確認檔案、purge、再確認一次。比較 invalidate 和 delete,看懂 x-cache,以及為什麼 purge 只清得到 CDN 這一層。
我用 Akamai CLI 走完一個循環:確認檔案、purge,再確認一次。
檔案更新後,使用者還看到舊版,第一個想到的通常是 purge。我想先搞懂 purge 到底做了什麼。
兩種 purge
| Invalidate | Delete | |
|---|---|---|
| 動作 | 把副本標成過期 | 刪掉副本 |
| 下一個 request | 帶 ETag 去問,可能拿到 304 | 重新下載整個檔案 |
| origin 負擔 | 低 | 高 |
| 用途 | 一般更新 | 舊版絕對不能再出現 |
- 我們有好幾個上傳服務,只有少數會呼叫 purge。其他的只靠 TTL 到期。
常用指令
curl -sI "https://cdn.example.com/assets/{id}/{file}" # 記下 date 和 etag
akamai --section default purge invalidate --staging "<url>" # 憑證在 ~/.edgerc
Purge 後等 5 秒,再 curl 一次(加上 Pragma: akamai-x-cache-on):
HTTP/2 200
etag: "32b7140e..."
-date: Sat, 18 Oct 2026 08:00:00 GMT
-x-cache: TCP_HIT from a23-...
+date: Sat, 18 Oct 2026 08:05:07 GMT
+x-cache: TCP_REFRESH_HIT from a23-...
x-cache從TCP_HIT變成TCP_REFRESH_HIT:副本變成過期,edge 回 origin 問過。etag沒變:檔案內容一樣,origin 回 304,edge 沿用原本的副本(Cache 的新鮮度:fresh、stale 和 304)。
Purge 只清得到 CDN 這一層。我當時以為 origin 後面沒有別的 cache,所以清完 CDN 就一定拿到新檔。後來才發現這個假設不成立(兩層 cache:我原本以為的樣子)。
Purge 清的是你看得到的那一層。看不到的那一層,會把舊檔再補回來。
參考來源:Akamai: EdgeGrid, Akamai: purge methods
延伸閱讀:Cache 的新鮮度:fresh、stale 和 304、Akamai property:一份 edge 設定、兩層 cache:我原本以為的樣子。或回到系列總覽。