1957 字
10 分鐘
Cloudflare R2 圖片託管最新版:免費額度、公開網址與快取設定

最近看到一篇用 Cloudflare R2 做圖片託管的教學,方向是對的:對部落格、小工具文件、靜態網站來說,R2 確實是很舒服的物件儲存選項。但我會想補一篇最新版,是因為「免費圖床」這四個字很容易讓人誤會。

R2 的強項是 免流量費、有免費額度、可以接自訂網域,也能用 S3 相容工具管理檔案。可是它仍然會計算儲存量與操作次數;圖片如果真的爆量,讀取請求也可能變成帳單來源。

這篇用 2026-07-08 查到的 Cloudflare 官方文件為準,整理一個比較適合部落格圖片託管的設定方式。

先看清楚 R2 免費額度#

Cloudflare R2 的計費不是只有容量,而是由儲存量與操作次數組成。以 Standard storage 來看,官方文件列出的免費額度是:

項目每月免費額度
儲存空間10 GB-month
Class A 操作1,000,000 次
Class B 操作10,000,000 次
Egress 流量免費

這裡有兩個重點。

第一,免費額度只適用於 Standard storage,不適用於 Infrequent Access storage。做圖片託管時,除非你很確定取用頻率與成本模型,不然先選 Standard 比較單純。

第二,圖片被讀取會算 Class B 操作。R2 不收 egress 流量費,但大量圖片請求仍然可能超過免費 Class B 額度。Cloudflare 官方的資產託管範例也提醒,如果每天有大量讀取,即使容量很小,Class B 操作仍可能產生成本。

所以比較準確的說法不是「R2 是無限免費圖床」,而是:小型部落格、文件站、個人作品集通常很容易落在免費額度內,但還是要看請求量。

架構建議:R2 加自訂網域#

R2 bucket 預設是 private。要把圖片當成公開資源使用,主要有兩條路:

方式適合情境注意事項
r2.dev 公開開發網址測試、臨時預覽官方標示為 development traffic,且有 rate limit
自訂網域正式圖片託管可以搭配 Cloudflare cache、Access、WAF 等功能

如果是正式部落格,我會直接接自訂網域,例如:

img.example.com
assets.example.com
cdn.example.com

Cloudflare 官方文件也寫得很明確:若要使用存取管理、快取、bot 管理等功能,公開 bucket 時需要設定自訂網域。r2.dev 適合開發測試,不適合拿來當正式圖片 CDN。

設定流程#

以下流程假設你已經有 Cloudflare 帳號,且網域也在同一個 Cloudflare 帳號裡管理。

Step 1:建立 Bucket#

到 Cloudflare Dashboard:

  1. 進入 R2 Object Storage
  2. 建立新的 bucket。
  3. 選擇 Standard storage。
  4. bucket 名稱建議用小寫與連字號,例如 zeroone-images

命名時我會避開空格、中文與太有情緒的名字。之後如果要接 CLI、同步工具或自動化流程,簡單的 key 會少很多麻煩。

Step 2:連接自訂網域#

在 bucket 的設定頁面找到 Custom Domains,加入你要使用的子網域,例如:

img.example.com

Cloudflare 會引導你確認 DNS record。等狀態變成 Active 後,就可以用:

https://img.example.com/posts/example/cover.webp

這種網址格式來引用圖片。

Step 3:先用 Dashboard 上傳測試圖#

第一次設定時,不要急著寫自動化。先用 Dashboard 上傳一張測試圖,例如:

test/hello.webp

然後用瀏覽器打開:

https://img.example.com/test/hello.webp

如果看得到圖片,再檢查 response header:

Terminal window
curl -I https://img.example.com/test/hello.webp

你要確認至少三件事:

  1. HTTP status 是 200
  2. content-type 正確,例如 image/webp
  3. 快取相關 header 符合你的預期。

Step 4:用 Wrangler 或 rclone 上傳#

少量圖片可以用 Dashboard。大量圖片、文章封面或自動化部署,建議改用 CLI。

Wrangler 適合單檔上傳:

Terminal window
wrangler r2 object put zeroone-images/posts/r2-guide/cover.webp --file=cover.webp

Cloudflare 官方文件提醒,Wrangler 上傳單檔有大小限制,且一次只能處理一個 object。若要同步整個資料夾,rclone 會比較適合:

Terminal window
rclone copy ./public-images r2:zeroone-images
rclone ls r2:zeroone-images

如果你已經有使用 S3 SDK 或 AWS CLI 的流程,R2 也提供 S3 相容 API。重點是 endpoint 要換成 Cloudflare R2 的 endpoint,region 通常使用 auto

圖片路徑怎麼整理#

做部落格圖片託管時,我會用這種結構:

posts/
sakana-translate/
cover.webp
screenshot-01.webp
cloudflare-r2-image-hosting/
cover.webp
dashboard.webp
shared/
avatars/
logos/

路徑規則比工具更重要。圖片一多,真正麻煩的不是上傳,而是你半年後不知道哪張圖還在用。

幾個習慣可以先定好:

  1. 檔名只用小寫英文、數字、連字號。
  2. 封面固定叫 cover.webp
  3. 截圖用 screenshot-01.webp 這種序號。
  4. 已發布文章的圖片不要覆蓋同名檔,除非你知道快取怎麼清。

如果圖片內容會更新,我會用版本化檔名:

dashboard-2026-07.webp

這比每次更新後到處 purge cache 更直覺。

快取設定不要漏掉#

R2 接自訂網域後,可以透過 Cloudflare Cache 讓圖片從 edge 回應,降低回源到 R2 的頻率。這對圖片託管很重要,因為讀取 R2 object 會算 Class B 操作。

實務上可以先做兩件事:

  1. 上傳圖片時設定合理的 Cache-Control
  2. 在 Cloudflare 針對圖片路徑建立 Cache Rule。

例如已經版本化、不會被覆蓋的圖片,可以使用較長快取:

Cache-Control: public, max-age=31536000, immutable

但如果你會覆蓋同一個檔名,例如永遠覆蓋 cover.webp,那就不要把快取時間拉太長,否則更新後會看到舊圖。

我的偏好是:檔名版本化,快取拉長;檔名固定,快取保守。

什麼情況不適合用 R2 當圖床#

R2 很適合部落格圖片,但不是所有圖片場景都適合。

如果你需要的是圖片轉檔、縮圖、裁切、水印、自動壓縮,R2 本身不是圖片處理服務。你可能還要搭配 Cloudflare Images、Workers,或自己的圖片處理 pipeline。

如果你的圖片需要私有授權、短效連結、防盜鏈、使用者權限控管,也不要只靠「不要公開連結」這種做法。要改用 signed URL、Workers、Access 或其他權限層。

如果你只是臨時貼圖,且完全不想管理網域、快取、路徑和備份,傳統圖片服務反而比較省心。

發布前檢查清單#

正式把 R2 當圖片託管前,我會檢查這些:

  1. Bucket 使用 Standard storage。
  2. 正式網址使用自訂網域,不使用 r2.dev
  3. 圖片路徑有固定規則。
  4. 本機或 Git repo 仍保留原始圖片備份。
  5. curl -I 檢查 content type 與 cache header。
  6. Cloudflare Billing 或 R2 Metrics 有定期看。
  7. 大量圖片上傳使用 rclone 或 S3 相容工具,不靠手動拖拉。

R2 最適合的定位,是「可控、便宜、能自動化的圖片物件儲存」。把它當成無限免費圖床,反而容易忽略請求成本、快取與備份。

常見問題#

Q: Cloudflare R2 圖片託管真的免費嗎?#

A: 小型部落格很可能落在免費額度內,但不是無限制免費。R2 Standard storage 每月有 10 GB-month、100 萬次 Class A、1,000 萬次 Class B 免費額度,egress 免費。超過免費操作次數或儲存量仍會依官方價格計費。

Q: 可以直接用 r2.dev 當正式圖片網址嗎?#

A: 不建議。Cloudflare 官方把 r2.dev 公開網址定位為 development traffic,且有 rate limit。正式圖片託管建議接自訂網域,才能搭配 Cloudflare cache、存取管理與安全產品。

Q: R2 會自動幫圖片壓縮或產生縮圖嗎?#

A: R2 是物件儲存服務,不是圖片處理服務。它負責存檔與提供物件存取;如果你需要壓縮、轉 WebP、裁切或產生多尺寸圖片,要在上傳前處理,或另外搭配 Cloudflare Images、Workers 或自己的處理流程。

參考資料:

Cloudflare R2 Pricing

Cloudflare R2 Public buckets

Cloudflare R2 Upload objects

Cloudflare R2 Wrangler commands

Cloudflare R2 S3 API compatibility

免費圖床選擇:15 分鐘搞定 Cloudflare R2 圖片託管

Cloudflare R2 圖片託管最新版:免費額度、公開網址與快取設定
https://laplusda.com/posts/cloudflare-r2-image-hosting-guide-2026/
作者
Zero
發佈於
2026-07-08
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。