接續前篇提到從硬碟存取資料造成的效能瓶頸, 可以改從 記憶體 存取改善效能
另一個效能的瓶頸會在 網路速度, 可以透過縮短 服務 和 客戶端 的地理距離來改善
將資料放到 Content Delivery Network (CDN) 就是一種
CDN 的伺服器通常遍佈全球, 並且會根據地理位置自動分配請求到最近的 CDN 伺服器, 所以我們不用像自己設計的分散式系統一樣擔心 可用性 的問題
通常 CDN 會說明哪些國家有伺服器, 如 The Cloudflare global network, Amazon CloudFront Key Features
(題外話: 發現 中華電信也有 CDN 服務 中華電信CDN, 但是資訊有點少XD)
並且和上篇提到的 Read-through 機制類似, 客戶端只需要從 CDN 伺服器請求資源
不同的是 CDN 強調的是 可用性, 所以通常不提供 自動化的同步機制, 需要由我們的服務自己清除 (或等他過期)
並且沒有 "寫入" 的更新機制, 只能 無效化 (Invalidate)
幾種常見的 無效化 CDN 快取的方式
CDN 會根據資源的 TTL 設定來決定內容的有效期限, 當 TTL 到期時, CDN 節點會自動將該內容標記為過期, 並在新請求進來時,向我們的服務請求最新的內容, 並更新快取 (Read-through)
CDN 通常允許我們主動清除或使快取無效, 如果要更新某個資源時, 可以透過 API 或後台發送清除請求, 讓 CDN 節點上的快取內容失效, 下次請求就會重新從我們服務重新取得最新的版本
我們也可以修改資源的 URL 加入版號, 讓 CDN 視為新的資源, 就可以防止舊的快取繼續被提供