静的ファイルの提供

多くの場合、アプリケーションでは動的リクエストの処理に加え、JavaScript、画像、CSS などの静的ファイルを提供する必要があります。フレキシブル環境のアプリでは、静的ファイルを Cloud Storage などの Google Cloud Platform オプションを使用して提供できます。また、アプリから直接提供することも、サードパーティのコンテンツ配信ネットワーク(CDN)を使用して提供することもできます。

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

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

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

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

Google Cloud クライアント ライブラリは、汎用的な PHP クライアントを Cloud Storage に提供します。これにより、App Engine アプリで Cloud Storage を使用してデータの格納や取得を行うことができます。

PHP クライアントは、API を使用するストリーム ラッパーも提供しています。これは、特殊なファイル システムとして Cloud Storage とのやり取りに使用できます。

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 を使用して静的アセットを提供する方法の詳細については、静的ウェブサイトをホストする方法をご覧ください。

他の GCP サービスからファイルを提供する

Cloud CDN を使用することも、他の GCP ストレージ サービスを使用することもできます。

アプリからファイルを直接提供する

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

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

ヒント: 本番環境では一般に、GCP 内で、または外部のサードパーティ CDN を使用して、静的コンテンツをアプリとは別に提供することをおすすめします。

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

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

runtime: php
env: flex

runtime_config:
  document_root: web

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

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

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