Cloudflare について
Feature Toggle(画像・動画)
概要
CastMatrix は、Cloudflare の有料サービス(Images / Stream)を環境変数で ON/OFF できます。
同じソースコードで、コスト重視の最小構成とリッチな動画・画像構成の両方に対応します。
フラグ一覧
ENABLE_CLOUDFLARE_IMAGES
| 設定 | 挙動 | Cast_Images.image_url |
|---|---|---|
| ON | Cloudflare Images で WebP 変換・リサイズ | Images の配信 URL |
| OFF | R2 に直接保存、変換なし | 本番: R2 公開 URL / ローカル・未設定時: /api/public/media/* |
ENABLE_CLOUDFLARE_STREAM
| 設定 | 挙動 | Casts.profile_video_url |
|---|---|---|
| ON | HLS/DASH エンコード・ストリーミング | Stream の動画 ID |
| OFF | R2 に生ファイル保存、HTML5 <video> 再生 |
本番: R2 URL / ローカル・未設定時: /api/public/media/* |
構成の選び方
| 構成 | Images | Stream | 想定 |
|---|---|---|---|
| 最小(コスト優先) | OFF | OFF | インフラ無料枠中心。動画はそのまま R2 配信 |
| 画像リッチ | ON | OFF | サムネイル最適化重視 |
| フルリッチ | ON | ON | iPhone 撮影動画の自動エンコード・高速再生 |
コスト目安は 01-infrastructure-costs.md を参照してください。
注意事項
- Toggle を途中で切り替えた場合、既存メディアの URL 形式が変わるため、再アップロードや移行手順が必要になる場合があります。
- OFF 時も R2 のストレージ・転送料は発生します(無料枠内で収まることが多いです)。
- 実装では 両方の分岐がコードに含まれている必要があります(片方のみの実装は不完全です)。
Toggle 切替時の手順
OFF → ON に切り替える場合
wrangler.tomlの対象変数を"true"に変更するCF_IMAGES_TOKEN/CF_STREAM_TOKENシークレットを設定する(未設定の場合)wrangler deployで Workers を再デプロイする- 新規アップロード分から新形式の URL が保存される
- 既存メディアは古い URL のまま — 必要に応じて管理画面で再アップロードする
ON → OFF に切り替える場合
- 既存のメディア URL(CF Images / Stream の URL)を引き続き参照するキャストが存在する場合は、先に再アップロードを完了させる
wrangler.tomlを"false"に戻して再デプロイする
切替前後でデータベースのマイグレーション変更は不要です(DB に保存する URL の形式が変わるだけです)。