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

一個 request 走過的路

一個 request 會經過 DNS、Akamai edge 和 origin 的 load balancer。為什麼「多久使用者才看得到新版」這個問題沒有單一答案。

一個送到 cdn.example.com 的 request 會經過三層:DNS、CDN edge、origin 的 load balancer。

我第一次畫這張圖,是為了回答一個問題:「檔案上傳到 bucket 後,多久使用者才看得到新版?」

Browser cdn.example.com CNAME → cdn.example.com.akamaized.net Akamai edge(預設 TTL 30 天) miss → origin: origin.example.com HTTP load balancer 依 URL 路徑選後端 storage bucket(真正的檔案)
一個 request 要先經過 DNS、Akamai edge 和 load balancer,才拿到 bucket 裡的檔案。
  1. DNS:cdn.example.com 用 CNAME 指到 Akamai 的 edge hostname(Akamai property:一份 edge 設定)。
  2. Akamai edge:有副本就直接回應。沒有副本,就去 origin 拿。
  3. Load balancer:依路徑把 request 交給對的 bucket(Load balancer 怎麼選後端)。

畫完我才發現,這個問題沒有單一答案。答案取決於路上每一層各自的 TTL(三個地方都在設定 TTL)。

「多久會更新?」要沿著路一層一層問,答案藏在每一層的 TTL 裡。

延伸閱讀:Load balancer:一個入口,依規則分給很多後端、Akamai property:一份 edge 設定、Load balancer 怎麼選後端、三個地方都在設定 TTL。或回到系列總覽。

↑↓ 移動 ↵ 開啟 esc 關閉