静的ファイルの提供

アプリケーションは、動的リクエストを処理するだけでなく、JavaScript、画像、CSS などの追加の静的ファイルを提供しなければならないことがよくあります。フレキシブル環境では、アプリケーションで静的コンテンツを提供する方法をユーザーが決定できます。静的コンテンツを提供するには、アプリケーションから直接提供する方法、Cloud Storage などの GCP オプションで静的コンテンツをホストする方法、サードパーティのコンテンツ配信ネットワーク(CDN)を利用する方法があります。

App Engine からファイルを提供する

通常、アプリからファイルを提供するのは簡単ですが、考慮すべき欠点がいくつかあります。

  • 静的ファイルのリクエストが、本来ならば動的リクエストに使用されるはずのリソースを消費する可能性があります。
  • 構成によっては、アプリからファイルを提供するとレスポンスのレイテンシが生じる可能性があり、負荷に対応して新しいインスタンスを作成するときにもその影響を受けることがあります。

ヒント: 本番環境では、アプリとは独立した方法で静的コンテンツを提供することがベスト プラクティスとされており、GCP を使うか外部にあるサードパーティの CDN を利用するのが一般的です。

アプリで静的ファイルを提供する例

PHP ランタイムはアプリを処理するために nginx を実行します。これはプロジェクト ディレクトリ内の静的ファイルを提供するように構成されています。app.yaml ファイルに document_root を指定して、ドキュメント ルートを宣言する必要があります。

runtime: php
env: flex

runtime_config:
  document_root: web

GCP からファイルを提供する

Cloud CDN を利用するか、Cloud Storage などの別の GCP ストレージ サービスを利用する方法もあります。

Cloud Storage からファイルを提供する

Cloud Storage を利用して動的なウェブアプリのために静的なアセットをホストできます。アプリから直接提供する代わりに Cloud Storage を利用することには次のメリットがあります。

  • Cloud Storage は基本的に、コンテンツ配信ネットワークとして機能します。デフォルトでは、一般公開されているすべてのオブジェクトがグローバルな Cloud Storage ネットワークにキャッシュされるため、特別な構成は必要ありません。
  • 静的なアセットの提供を Cloud Storage にオフロードすることで、アプリの負荷が軽減されます。静的なアセットの数とアクセスの頻度によっては、アプリを実行するコストを大幅に削減できる可能性があります。
  • 多くの場合、Cloud Storage を利用することで、コンテンツにアクセスするための帯域幅の料金を抑えることができます。

アセットを Cloud Storage にアップロードするには、Cloud SDK または Cloud Storage API を使用します。

Cloud Storage バケットから提供する例

Cloud Storage バケットを作成し、Cloud SDK を使用して静的なアセットをアップロードする簡単な例を示します。

  1. バケットを作成します。プロジェクト ID に基づく名前をバケットに付けることが一般的ですが、必須ではありません。バケット名はグローバルに一意でなければなりません。

    gsutil mb gs://<your-bucket-name>
    
  2. バケット内のアイテムへの読み取りアクセス権を付与するよう ACL を設定します。

    gsutil defacl set public-read gs://<your-bucket-name>
    
  3. アイテムをバケットにアップロードします。通常は、rsync コマンドを使用すると、最も短時間で簡単にアセットをアップロードして更新できます。または cp を使用することもできます。

    gsutil -m rsync -r ./static gs://<your-bucket-name>/static
    

https://storage.googleapis.com/<your-bucket-name>/static/... を介して静的なアセットにアクセスできます。

カスタム ドメインの名前を指定して提供するなど、Cloud Storage を利用して静的なアセットを提供する方法については、静的ウェブサイトをホストする方法をご覧ください。

Cloud Storage API を使用してアプリ内からファイルのアップロード、ダウンロード、操作を動的に行う方法についての詳細は、Cloud Storage の使用をご覧ください。

サードパーティのコンテンツ配信ネットワークから提供する

外部にあるサードパーティの CDN を利用することで、静的ファイルを提供したり動的リクエストをキャッシュに保存したりすることもできますが、その場合はアプリのレイテンシとコストが増加する可能性があります。

パフォーマンスの観点から、CDN Interconnect をサポートしているサードパーティの CDN を利用することをおすすめします。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

PHP の App Engine フレキシブル環境に関するドキュメント