Blog

Wie Sie das Google Cloud Content Delivery Network konfigurieren

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
3 Minuten

Das Google Content Delivery Network nutzt die weltweit verteilten Edge Points of Presence von Google, um HTTP(S)-Load Balanced Content in der Nähe unserer Nutzer zwischenzuspeichern und so die Latenzzeit und die Kosten zu reduzieren. In diesem Blog konfigurieren wir unsere Beispielanwendung mit terraform, um die beteiligten Komponenten zu verstehen und das Content Delivery Network in Aktion zu sehen. Das Content Delivery Network vor unsere Anwendung zu setzen, erweist sich als einfach: Wir aktivieren einfach den CDN-Cache auf den Load Balancer-Backends:

eingesetzte gcp-Anwendung

Das Content Delivery Network kann sowohl Service- als auch Speicher-Backends vorschalten. Das bedeutet natürlich, dass wir unsere Anwendung zunächst hinter dem Google HTTP/S Load Balancer konfigurieren müssen, wie in unserem vorherigen Blog beschrieben.

CDN auf Speicher-Backends

Um das CDN-Caching auf Speicher-Backends zu aktivieren, setzen Sie die Eigenschaft enable_cdn auf true:

resource "google_compute_backend_bucket" "paas-monitor" {
  bucket_name = "${google_storage_bucket.paas-monitor.name}"
  enable_cdn = true

Standardmäßig erhält jedes Objekt, das aus dem Bucket bedient wird, eine Cache-Kontrolle von public, max-age=3600. Sie
können diese Einstellungen für jedes einzelne Objekt außer Kraft setzen, wie unten gezeigt:

resource "google_storage_bucket_object" "index" {
  name          = "index.html"
  source        = "./public/index.html"

  cache_control = "public, max-age=300"
  bucket        = "paas-monitor-${var.project}-static-content"
}

CDN auf Service-Backends

Um die CDN-Zwischenspeicherung auf Service-Backends zu aktivieren, setzen Sie die Eigenschaft enable_cdn auf true:

resource "google_compute_backend_service" "paas-monitor" {
  backend {
    group = "${module.instance-group-region-a.instance_group_manager}"
  }
  enable_cdn = true

Backend-Dienste müssen Cache Control- und Etag-Header für Ressourcen zurückgeben, die wir im Cache haben wollen.
In unserer Go-Anwendung haben wir
die folgenden Antwort-Header für ausgewählte Ressourcen hinzugefügt:

w.Header().Set("Cache-Control", "public, max-age=60")
w.Header().Set("ETag", etag)

Dies führt dazu, dass der Inhalt für 60 Jahre zwischengespeichert wird. Wenn der Inhalt im Cache abgelaufen ist, stellt Cloud CDN eine Anfrage mit
dem etag-Wert in der Kopfzeile . Wenn der etag-Wert immer noch derselbe ist, können Sie einen HTTP-Status 304 (Not modified) zurückgeben,
um Netzwerkbandbreite zu sparen, wie unten gezeigt:

if match := r.Header.Get("If-None-Match"); match != "" {
    if strings.Contains(match, etag) {
    w.WriteHeader(http.StatusNotModified)
    return
    }
}

Installation

Wenn Sie diese Anwendung in Ihrem Projekt installieren möchten, installieren Sie terraform,
erstellen Sie ein Google-Projekt und konfigurieren Sie Ihr gcloud SDK so, dass es darauf verweist. Führen Sie dann die folgenden Befehle aus:

git clone https://github.com/binxio/blog-configuring-google-cloud-cdn.git
cd blog-configuring-google-cloud-cdn

GOOGLE_PROJECT=$(gcloud config get-value project)
terraform init
terraform apply -auto-approve
open http://$(terraform output ip-address)

Es kann ein paar Minuten dauern, bis der Datenverkehr die Anwendung erreicht. Bis dahin werden Sie http 404- und 502-Fehler erhalten.

Fazit

Die Aktivierung des Google Content Delivery Network für jede Anwendung ist in der Tat sehr einfach. Stellen Sie Ihre Anwendung einfach über den HTTP/S-Loadbalancer
zur Verfügung und schalten Sie die enable_cdn Flagge im Backend ein - und los geht's!

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.