Cloudflare Worker
本頁說明 worker/index.js 如何在 Cloudflare 邊緣快取圖片,以及部署前需要修改的地方。
部署前設定
handler 以 new URL(url.pathname, "[URL]") 組出回源網址,[URL] 是佔位字串,部署前必須換成圖片伺服器的來源網址(例:https://img-origin.example.com),否則 new URL 會拋出例外。
處理範圍
| 路徑副檔名 | 行為 |
|---|---|
.jpg、.jpeg、.png、.webp、.svg(不分大小寫) |
快取並回源 |
其他(含 .avif、.pdf、無副檔名) |
回 400,內容為 400 |
判斷依據是原始路徑的副檔名,不是 t 參數;以 t=avif 讀取 .jpg 原檔仍會被處理。PDF 上傳後無法經由此 Worker 讀取。
快取行為
| 項目 | 行為 |
|---|---|
| 快取 key | 回源 URL(含全部 query 參數);另加 X-Custom-Cache-Key 標頭記錄 query |
| 快取儲存 | caches.default,以 event.waitUntil(cache.put(...)) 非同步寫入 |
| 有效期 | 回應覆寫為 Cache-Control: public, max-age=604800(7 天) |
| 診斷標頭 | CF-Cache-Status: HIT/MISS、X-Query-String |
回源時沿用原請求的方法與標頭,不檢查來源回應的狀態碼。
與 Nginx 的關係
Worker 回源到 Nginx,未命中時再由 Nginx 的 proxy_cache 與 Go 服務處理;四層命中順序見 快取分層。