静的ファイルの提供

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

アプリケーションから提供する

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

runtime: php
env: flex

runtime_config:
  document_root: web

通常、アプリケーションからファイルを提供することは簡単ですが、このアプローチには弱点があります。 静的ファイルのリクエストにより、動的リクエストに使用できるであろうリソースが消費される可能性があります。設定によっては、このためにアプリケーションの応答が遅くなったり、ロードを処理する新しいインスタンスが作成されたりすることがあります。本番環境ではアプリケーションから独立して静的コンテンツを提供することをおすすめします。

Cloud Storage から提供する

動的ウェブ アプリケーションの静的アセットをホストするために Cloud Storage を使用できます。アプリケーションから直接提供する代わりに Cloud Storage を使用するメリットは、次の点です。

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

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

静的ファイルを Cloud Storage バケットから提供する例

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

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

    gsutil mb gs://<your-bucket-name>
    
  2. バケット内のアイテムへの READ 権限を付与するよう 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)を使用できます。Google Cloud Platform との直接相互接続リンクがあるサードパーティ CDN サービスを使用すると、アプリケーションのレイテンシおよびコストを削減できます。詳細については、CDN Interconnect をご覧ください。

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

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

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