Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Cloudflare Image Resizing と R2 による画像配信の最適化

最終更新 Markdown で表示Agent セットアップ

はじめに

Web サイトの画像配信を最適化することは、ユーザー体験の向上に重要です。画像はサイトのデータ量の大半を占めることが多く、ページ読み込み時間、検索エンジンの順位、配信コスト、全体性能に大きく影響します。このリファレンスアーキテクチャ図は、わかりやすく、スケーラブルで高性能な構成を案内します。画像のサイズと品質を指定するよう URL 文字列を変えるだけで、その形式を求めるユーザーへ、最適化した画像をキャッシュして配信できます。この構成に関わる Cloudflare のコンポーネントは次のとおりです。

  • Cloudflare CDN - Cloudflare のグローバルネットワーク を使い、変換済み画像をキャッシュし、エンドユーザーへ高速で安定して配信します。
  • Cloudflare Images - Cloudflare Images で、Cloudflare R2 などのオブジェクトストレージに保存した画像をリサイズ、最適化、変換します。変換は特定形式の URL に基づいて行われ、アプリケーション側の改修は最小限で済みます。
  • Cloudflare R2 Object Storage - R2 は大量の非構造化データを保存できます。この用途では、変換元となるオリジナル画像(最高品質)の保存に使います。
  • Cloudflare Transform Rules - ほかのソリューションから Cloudflare へ移行する場合、Transform Rules で別ソリューションの構文を Cloudflare 固有の構文へ URL リライトでき、移行の複雑さを下げられます。

Cloudflare Image Resizing と R2 による画像配信

図 1: Cloudflare Image Resizing と R2
図 1: Cloudflare Image Resizing と R2
  1. ユーザーリクエスト: ユーザーは画像(image.jpg)の HTTP リクエストを送ります。幅や品質などの変換は、カンマ区切りのオプション一覧として URL に直接指定します。
  2. キャッシュヒット: Cloudflare はユーザーに最も近い拠点でリクエストを処理します。まず、要求された画像変換がすでに Cloudflare の Cache にあるかを確認します。あれば、追加処理なしですぐにユーザーへ返します。なければ次のステップへ進みます。
  3. Transform Rules(任意): ほかの画像ソリューションから移行する場合、アプリケーション層での大規模な改修を避けるため、パスとクエリ文字列をリライトする必要があることがあります。動的リライトと静的リライトの両方に対応し、動的リライトは複雑な式で多様な URL リライトをサポートします。
  4. キャッシュミス - R2: 要求された画像が Cloudflare の Cache にない場合、リクエストはオリジンへ送られます。この構成のオリジンは Cloudflare の R2 Object Storage です。R2 に保存するのはオリジナル画像だけです。リサイズ済みバリアントは R2 バケットに置かないため、オブジェクトのライフサイクルルールなしでも R2 の運用負荷は抑えられます。
  5. 画像の変換: ステップ 1 で送った、またはステップ 3 で変換した URL 構文に基づき、Cloudflare Images が画像を変換し、Cache へ送ったうえで、要求された画像をエンドユーザーへ返します。

Image Resizing の URL 構文リファレンス

特定形式の URL で画像をリクエストすると、変換とリサイズを簡単にできます。この節では、上の図を参照しながら、画像変換の URL 構造と各要素を説明します。

  • パート 1 - Cloudflare 上の対象ドメイン名です。Cloudflare にオンボードしたゾーンで、Web サイトまたは画像を配信する場所です。例: https://www.mywebsite.com/
  • パート 2 - Cloudflare 組み込みの Worker が扱う特別なパスであることを示す固定プレフィックスです。
  • パート 3 - 画像向けオプションのカンマ区切り一覧です。例: width=80,quality=75
  • パート 4 - オリジンサーバー上の絶対パスです。例: /uploads/image.jpg

リクエストで使う最終的な URL は次のようになります。

https://www.mywebsite.com/cdn-cgi/image/width=80,quality=75/uploads/image.jpg

関連リソース

役に立ちましたか?