緩存策略的本質是「在效能與資料新鮮度之間找到平衡點」。錯誤的配置會導致用戶看到舊內容,或是增加源站壓力。以下依資源特性分類說明配置策略。
public, max-age=31536000, immutablelogo.a1b2c3.png),內容變更即檔名變更,可安全長期緩存public, max-age=86400, must-revalidateapp.v20240115.js),配合長緩存 + HTML 引用更新,實現「即時生效」與「長期緩存」並存動態資源指:PHP、JSP、ASP、ASPX、Node.js、Go 等後端渲染頁面,或 API 介面回應。
Cache-Control: no-cache, private, max-age=0
# 或
Cache-Control: no-store, private, must-revalidate
| 場景 | 特徵 | 建議策略 |
|---|---|---|
| 用戶個人中心頁面 | 含 Cookie/Session,個人化程度高 | no-cache, private |
| 交易/支付頁面 | 安全性最高,絕對不可緩存 | no-store, private |
| 即時資料 API (股價、聊天) | 秒級時效性要求 | no-cache, must-revalidate |
| 搜尋結果頁 | 可接受分鐘級延遲 | public, max-age=60, stale-while-revalidate=30 |
如果加速域名下動態資源佔比超過 50%,強烈建議拆分域名:
- 靜態資源走 CDN 加速域名(
static.example.com)- 動態資源走主域名直連源站(
api.example.com或www.example.com)優勢:避免動態請求污染 CDN 緩存、減少不必要的回源、提升動態請求響應速度、便於分別配置 WAF/限流策略。
# 檢查響應頭
curl -I https://cdn.example.com/assets/app.js
# 檢查緩存命中狀態(需 CDN 支援)
curl -I -H "Accept-Encoding: gzip" https://cdn.example.com/assets/app.js | grep -i "x-cache\|cf-cache-status\|age"