Why CloudFlare?
原本只想架在小主機上 但由於流量不確定 為避免之後擴充問題 決定嘗試雲端方案 使用 CloudFlare 的主要原因如下:
- 自身網域都是掛 CloudFlare
- 擁有良好的防護機制(避免帳單爆炸 🫠)
- 解決方案豐富,整合得很好
使用後也發現 CloudFlare 對於服務的整合上真的非常方便
All in CloudFlare
CloudFlare 提供了 Workers 讓開發者能自行部屬環境
在連結資源上非常方便
本專案使用 Next. Js 建構,搭配多項 CloudFlare 服務:
使用的服務與架構
- D 1 (Database)
- 支援 SQL 語法,可搭配 drizzle 使用
- KV Namespace (Cache)
- 以 key-value 暫存 D 1 查詢結果
- 減少 API request time:
800 ms → 200 ms
- R 2 (Cloud Storage)
- CloudFlare 自家的 S 3 儲存方案
- 「R 2」代表「Reduced Redundancy」,象徵更低成本
這裡有踩到一個坑 NextJS 預設會自動壓縮圖片 看請求會發現 由 _next/image/{img_url} 輸出圖片 就算 Image 裡面元素放的是外部連結也會被壓縮 Image 要補上unoptimized關閉 Next. Js 的影像優化機制 由於圖片已先行處理過成 webp,不需要額外優化 由 500+ ms 降至 160~180 ms (20 kb)
專案架構與開發流程
在 AI 的協助下 目前在開新專案我會透過以下流程
-
確認可行性
- 目標: 能透過 YouTube 影片結合字幕達成「歌詞播放器」效果。
- 控制播放器
- 取得播放器進度
- 流程
- 請 LLM 生成最簡版本驗證可行性
- 可行後再逐步訂出 SPEC SPEC 的制定,以自己開發經驗來說,都是會滾動調整的,不一定要完美,但盡可能精準列出需求
- 目標: 能透過 YouTube 影片結合字幕達成「歌詞播放器」效果。
-
訂 SPEC
- 列出需求 包含功能、環境、工具、部署環境等
- 和 LLM 討論並調整 通常 LLM 都會過度設計,挑出自己需要的內容,減少不必要的設計
- 如需資料庫或複雜結構
- 先訂出 INTERFACE
- 請 LLM 補充架構,確認是否有少考慮的設計
- 最後我會盡可能選擇自己熟悉的語言、工具
- 盡可能能理解整體專案結構,現在用下來的體驗雖然首輪的功能是沒問題的,但後續如果有新增功能,很容易發生 side effect
- 如果有新工具要學習,先讓 LLM 產出簡化範例,快速理解使用方式
-
測試上線 整套服務幾乎都掛給 CloudFlare
- 不需額外特別處理防攻擊、快取優化等問題
- 除基本功能外,額外加入以下監控與分析:
- Google Analytics - 分析網頁流量來源
- Google Search Console - 提供網站索引與搜尋追蹤
- Google PageSpeed Insights - 測試網頁效能
- 補充
CloudFlare 有提供 ZeroTrust 的功能
可以設定特定路徑需要經過 CloudFlare 的認證才能存取
如果管理人員數量不大,可以直接透過該設定指定路徑的存取方式
而權限的解析,可以直接解析 cloudflare 的 jwt,使用下來學習成本低,蠻推薦使用的

最後來放一些網站截圖
