Statische Dateien bereitstellen

Anwendungen müssen über die Verarbeitung von dynamischen Anfragen hinaus häufig auch statische Dateien wie JavaScript, Bilder und CSS bereitstellen. Anwendungen in der flexiblen Umgebung können statische Dateien aus einer Google Cloud-Option wie Cloud Storage bereitstellen, sie direkt bereitstellen oder ein Content Delivery Network (CDN) eines Drittanbieters verwenden.

Dateien über Cloud Storage bereitstellen

In Cloud Storage können statische Inhalte für dynamische Webanwendungen gehostet werden. Die Verwendung von Cloud Storage anstelle der direkten Bereitstellung aus der Anwendung bietet folgende Vorteile:

  • Cloud Storage funktioniert im Wesentlichen wie ein Content Delivery Network. Eine spezielle Konfiguration ist dazu nicht erforderlich, da öffentlich lesbare Objekte standardmäßig im Cache des globalen Cloud Storage-Netzwerks gespeichert werden.
  • Ihre Anwendung wird dadurch entlastet, dass die Bereitstellung statischer Inhalte an Cloud Storage übergeben wird. Je nach Umfang der statischen Inhalte und Häufigkeit der Zugriffe können sich dadurch die Kosten für die Ausführung Ihrer Anwendung erheblich reduzieren.
  • Die Bandbreitengebühren für den Zugriff auf Inhalte können bei Cloud Storage oft geringer ausfallen.

Sie können Ihre Assets mit dem gsutil-Befehlszeilentool oder der Cloud Storage API in Cloud Storage hochladen.

Die Google Cloud-Clientbibliothek stellt einen idiomatischen PHP-Client für Cloud Storage zum Speichern und Abrufen von Daten mit Cloud Storage in einer App Engine-Anwendung bereit.

Der PHP-Client bietet auch einen API-gestützten Stream-Wrapper, der zur Interaktion mit Cloud Storage als spezialisiertes Dateisystem genutzt werden kann.

Beispiel für die Bereitstellung über einen Cloud Storage-Bucket

In diesem einfachen Beispiel werden ein Cloud Storage-Bucket erstellt und statische Assets mithilfe der Google Cloud CLI hochgeladen:

  1. Erstellen Sie einen Bucket. Es ist üblich, aber nicht erforderlich, dass Sie Ihren Bucket nach Ihrer Projekt-ID benennen. Der Bucket-Name darf global nur einmal vorkommen.

    gsutil mb gs://<your-bucket-name>
    
  2. Legen Sie in der ACL Lesezugriff auf Elemente im Bucket fest.

    gsutil defacl set public-read gs://<your-bucket-name>
    
  3. Laden Sie Elemente in den Bucket hoch. Am schnellsten und einfachsten lassen sich Inhalte in der Regel mit dem Befehl rsync hochladen und aktualisieren. Mit cp ist dies ebenfalls möglich.

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

Sie können jetzt über https://storage.googleapis.com/<your-bucket-name>/static/... auf Ihre statischen Inhalte zugreifen.

Weitere Informationen zur Bereitstellung statischer Inhalte über Cloud Storage, einschließlich der Bereitstellung über einen benutzerdefinierten Domainnamen, finden Sie unter Statische Website hosten.

Dateien aus anderen Google Cloud-Diensten bereitstellen

Sie können auch Cloud CDN oder andere Google Cloud-Speicherdienste verwenden.

Dateien direkt aus der Anwendung bereitstellen

Die Bereitstellung von Dateien aus der Anwendung ist in der Regel unkompliziert. Es gibt jedoch einige Nachteile, die Sie beachten sollten:

  • Bei Anfragen für statische Dateien können Ressourcen verwendet werden, die andernfalls für dynamische Anfragen zur Verfügung stehen würden.
  • Je nach Konfiguration kann das Bereitstellen von Dateien aus der Anwendung zu einer Antwortlatenz führen, die sich auch auf die Erstellung neuer Instanzen für die Lastverarbeitung auswirken kann.

Beispiel für das Bereitstellen statischer Dateien mit einer Anwendung

Innerhalb der PHP-Laufzeit wird zum Bereitstellen Ihrer Anwendung nginx ausgeführt. Damit lassen sich in Ihrem Projektverzeichnis statische Dateien bereitstellen. Geben Sie zum Deklarieren des Dokumentenstamms document_root in der Datei app.yaml an:

runtime: php
env: flex

runtime_config:
  document_root: web

Aus einem Content Delivery Network eines Drittanbieters bereitstellen

Sie können jedes externe CDN eines Drittanbieters verwenden, um Ihre statischen Dateien bereitzustellen und dynamische Anfragen im Cache zu speichern. Dadurch erhöht sich jedoch unter Umständen die Latenz Ihrer Anwendung und es können höhere Kosten anfallen.

Zur Verbesserung der Leistung sollten Sie ein Drittanbieter-CDN verwenden, das CDN Interconnect unterstützt.