過去我一直使用 vgy.me 作為圖床,老實說沒什麼大缺點,只要不碰觸兒童保護相關法規,基本上什麼圖都能上傳。然而最近它卻頻繁出現 Cloudflare 錯誤,導致圖片無法正常顯示,就連官方也坦言問題出在 Cloudflare 那邊,自己無能為力。
既然如此,只好另尋穩定的替代方案。找了一圈之後,能同時滿足「穩定」、「快速」、「不隨意刪檔」這三個條件的,付費服務中只剩下原本的 SM.MS(現已更名為 S.EE)。不過它改名後已取消終生方案,改為純訂閱制,這樣的話我還不如直接上 Cloudflare R2 或自架。幾番考量後,我決定採取混搭策略:不常變動的圖片(例如部落格的配圖)放進 R2,短暫分享或不適合長期存放的圖片則用自架的 Zipline 處理——它支援設定自毀時間或閱覽次數上限,到期自動刪除,管理起來相當方便。
設定重點與注意事項
基礎架構:以 Cloudflare R2 作為儲存後端,透過 PicList 用戶端以 S3 協定上傳檔案,並綁定自訂網域以啟用 CDN 功能。
費用控管:
- R2 免費額度為:每月 10 GB 儲存空間、100 萬次 A 類操作、1,000 萬次 B 類操作。
- 建議在 Cloudflare 後台設定用量通知(Notifications),在接近免費上限時提早發送 Email 預警,避免意外超額。
快取優化(Cache Rules):
- 設定當主機名稱符合自訂網域時,強制啟用 Edge TTL(1 個月) 與 Browser TTL(1 個月)。
- DNS 記錄必須設為 橘雲(Proxied) 狀態,快取規則才會生效。
- 此優化能大幅降低 B 類操作次數:圖片一旦被讀取過,就會快取至邊緣節點,後續請求直接由快取回應,不再向 R2 計費。
PicList 自動化設定:
- 格式轉換:上傳前自動將圖片轉為 WebP 格式(品質 75),有效節省儲存空間。
- 命名規則:目前會自動以
{md5}作為檔名,嘗試過高級重命名設定仍無效,暫時維持現狀。 - 儲存路徑:設為
img/{year}/{month}/,依年月分資料夾整理。
綁定信用卡(重要):
- R2 採後付費模式,需綁定信用卡而非預先儲值,理論上費用可能失控。不過以個人用量來說,在真正碰到付費門檻之前,流量通常早就吸引廣告商上門了,所以不必過度擔心。
- 記得開啟 Cloudflare 的機器人防護(Bot Fight Mode),防止爬蟲大量消耗免費額度。
參考連結
免費圖床不求人:用 Cloudflare R2 + PicGo 打造穩定圖床方案手把手教你用 Cloudflare R2 - 掘金
