因敝公司會有大量的 landing page 需求,且往往客戶群也涵蓋了美國以及港澳等地區,更別說大量的圖片使用,都是會造成使用 cloudfront 等 CDN 服務的費用支出問題(我們曾有圖片超過 10 MB 甚至影片超過 100MB 的狀況)。在尋找一些解決方案後,S3 + Cloudflare 是功夫花費最少且最符合當代開發流程的方式。

在此方案前,我們使用的是 S3 + Cloudfront 的解決方案,基本上最明顯的支出會有以下幾項:

  • S3 儲存空間費用:每 GB 大約 0.025 美金,基本上如果 1TB 大概每個月台幣 800,加上大量的開發套件或函示庫都有整合,算是非常棒的雲端儲存解決方案
  • Cloudfront (CDN)流量費用:約每 GB 0.140 美金,所以若以圖片平均每張 100KB 大小,常常一個月下來有將近 1TB 流量跑不掉(敝公司做的 landing page 平均每個有 10~12 MB 的圖片,且有壓縮喔!)。
  • Cloudfront HTTP[S] Request:此部分大約每 10000 個是 0.0090 美金,因相比上述兩項比重小,先暫時可忽略。

統計以上,一個月光花在 CDN 上看 5000 台幣,更別說流量更大的內容型網站,也曾聽過破十萬的。

-- 我是分隔線 --

Cloudflare

簡單說,cloudflare 是一個具有 CDN 服務的 DNS 服務。使用此服務最大優點與缺點就是需將網域整個交由他來管理,所有該網址流量都會經過他。

且在費用上不按流量計費,是按照要開啟的服務來升級會員等級,照過去經驗一般用途都會是免費;但近期聽到些朋友說 cloudflare 找他們收流量費,但小弟不負責任的猜測,只要流量不是台灣百大等級的,被找上的機率很低。

除了 CDN 外,像是全站 cache, ga tracking, HTTPS 等服務也都非常方便設定,算是符合絕大多數網站的好服務。更別說還有 DDoS 與其他資安攻擊的防護,還有流量來源等的分析 dashboard。

如何開始

此部分將假設已設定好網域在 cloudflare 帳號之狀況

  1. 客製化 S3 bucket 網址:建立一個你的 assets 網址的 bucket(在 S3 開一個 bucket 名稱為你想要的網域),例如 s3cdn.example.com
    s3 customize domain
  2. 在 cloudflare 上設定 CNAME Record 給這個子網域,指定到 s3 bucket 的原網址 (e.g. s3cdn.example.com.s3.amazonaws.com),記得最右邊的雲端要 active 為橘色才算啟用喔。
    cloudflare setup s3 domain

可以看到節省的流量是非常可觀的百分比:
cloudflare bandwidth saving

以上解決方案提供給大家,讓大家都能以最小花費趕快將產品做起來!