Dynamische Komprimierung aktivieren

Bei der dynamischen Komprimierung werden von Cloud CDN bereitgestellte Antworten automatisch komprimiert. Die Größe der über das Netzwerk gesendeten Daten wird in den typischen Fällen um 60 % bis 85 % reduziert.

So wird die Zeit für das Herunterladen von Inhalten reduziert. Bei wichtigen Assets wie Stylesheets (CSS), Skripts (JavaScript) und Videomanifesten (HLS/DASH) kann dies die Seitenladezeit und die Startzeiten von Videos reduzieren.

Weitere Informationen zu den Vorteilen der Komprimierung von Antworten finden Sie im Web Fundamentals-Leitfaden.

Sie können die Komprimierung für einen Backend-Dienst oder einen Backend-Bucket aktivieren.

Beispielanwendungsfälle

Die dynamische Komprimierung reduziert die Größe der vom Cloud CDN-Edge an den Client gesendeten Daten direkt. Das hat folgende Möglichkeiten:

  • Reduzieren Sie die Größe von CSS und JavaScript, damit Webseiten schneller gerendert werden, und reduzieren die Zeit für First Contentful Paint, einen wichtigen Messwert für die Webleistung.
  • Sie haben große, positive Auswirkungen beim Caching von REST API-Antworten, z. B. JSON-Nutzlasten. Diese Nutzlasten werden aufgrund der wiederkehrenden Schlüssel, Leerzeichen und geschweiften Klammern gut komprimiert. Das Caching öffentlicher APIs für 5–10 Sekunden ist ein beliebter Ansatz, um die Ursprungslast zu reduzieren und gleichzeitig die Aktualität der Daten zu gewährleisten.

    Selbst ohne Caching kann die Komprimierung dieser Antworten die Gesamtbyte reduzieren, die um bis zu 90 % gesendet werden.

  • Verbessern Sie die Startzeit der Wiedergabe für die Videobereitstellung und die Join-Latenz für das Livestreaming. Große Live-Genehmigungen (Manifeste) haben eine beträchtliche Menge an wiederkehrenden Daten, einschließlich des Host- + Pfadpräfixes der einzelnen Segmente sowie der HLS- oder DASH-Wiedergabemetadaten. Je schneller die Playlist geladen wird oder Aktualisierungen der Playlist heruntergeladen werden, desto weniger Zeit wartet ein Client auf das Parsen und das Herunterladen der referenzierten Videosegmente. Die HLS- und DASH-Listen werden häufig insgesamt um mehr als 90 % reduziert.

Hinweise

Du benötigst Folgendes:

  • Ein Cloud CDN-fähiges Backend konfiguriert. Wenn Sie Cloud CDN derzeit nicht konfiguriert haben, können Sie einem der Einrichtungsleitfäden folgen.
  • Ihr Backend hat komprimierbare Inhalte, die bereitgestellt werden können, z. B. Web-Assets oder Videomanifeste zwischen 1 KiB und 10 MiB (einschließlich).
  • Clients sind nicht darauf angewiesen, Teilinhalte mit Bereichsanfragen oder starken ETags abzurufen. Diese sind mit der dynamischen Komprimierung nicht kompatibel.
  • Clients können Antworten ohne Content-Length-Header verarbeiten. Beispielsweise haben Cache-Fehler, die von Cloud CDN komprimiert werden, keine Content-Length-Header.
  • Die IAM-Administratorrolle „Compute Load Balancer“ (roles/compute.loadBalancerAdmin), die erforderlich ist, um Änderungen an Ihrer Back-End-Konfiguration vorzunehmen.

Komprimierung für einen Backend-Dienst oder -Bucket aktivieren

So aktivieren Sie die Komprimierung:

Console

Neuen Ursprung hinzufügen

Folgen Sie der Anleitung unter Einrichtung für den entsprechenden Back-End-Typ, um einen neuen Ursprung hinzuzufügen und einzurichten. Konfigurieren Sie beim Erstellen des Ursprungs im Abschnitt Erweiterte Optionen die dynamische Komprimierung. Dazu wählen Sie in der Liste Komprimierungsmodus die Option Automatisch aus.

Vorhandenen Ursprung bearbeiten

So bearbeiten Sie einen vorhandenen Cloud CDN-Ursprung:

  1. Rufen Sie in der Google Cloud Console die Seite Cloud CDN-Ursprünge auf.

    Zur Seite „Cloud CDN-Ursprünge“

  2. Klicken Sie auf den Namen des Abreiseorts, den Sie bearbeiten möchten, und dann auf Bearbeiten.

  3. Klicken Sie im Abschnitt Grundlagen des Ursprungs auf Weiter.

  4. Klicken Sie im Bereich Host- und Pfadregeln auf Weiter.

  5. Gehen Sie im Abschnitt Cache-Leistung zu Erweiterte Optionen.

  6. Wählen Sie in der Liste Komprimierungsmodus die Option Automatisch aus.

  7. Klicken Sie auf Fertig, um die Änderungen zu übernehmen.

gcloud

Verwenden Sie für Back-End-Dienste den Befehl gcloud compute backend-services create oder den Befehl gcloud compute backend-services update mit dem Flag --compression-mode.

Verwenden Sie für Back-End-Buckets den Befehl gcloud compute backend-buckets create oder den Befehl gcloud compute backend-buckets update mit dem Flag --compression-mode.

Verwenden Sie für einen neuen Backend-Dienst den Befehl create:

gcloud compute backend-services create BACKEND_SERVICE_NAME \
    --compression-mode=AUTOMATIC

Verwenden Sie für einen vorhandenen Backend-Dienst den Befehl update:

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --compression-mode=AUTOMATIC

Verwenden Sie für einen neuen Backend-Bucket den Befehl create:

gcloud compute backend-buckets create BACKEND_BUCKET_NAME
    --compression-mode=AUTOMATIC

Verwenden Sie für einen vorhandenen Backend-Bucket den Befehl update:

gcloud compute backend-buckets update BACKEND_BUCKET_NAME
    --compression-mode=AUTOMATIC

Der Wert für compression-mode kann einer der folgenden sein:

  • AUTOMATIC: Verwendet automatisch die beste Komprimierung basierend auf dem vom Client gesendeten Header Accept-Encoding. In den meisten Fällen wird die Brotli-Komprimierung bevorzugt.
  • DISABLED (Standard): Komprimierung wird deaktiviert.

API

Verwenden Sie für Back-End-Dienste die Methode backendServices.insert oder die Methode backendServices.update.

Verwenden Sie für Back-End-Buckets die Methode backendBuckets.insert oder die Methode backendBuckets.update.

Verwenden Sie einen der folgenden Befehle:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET

Fügen Sie dem JSON-Anfragetext folgendes Snippet hinzu:

"compressionMode": AUTOMATIC

Der Wert für compression-mode kann einer der folgenden sein:

  • AUTOMATIC (empfohlen): Verwendet automatisch die beste Komprimierung basierend auf dem vom Client gesendeten Header Accept-Encoding. In den meisten Fällen wird die Brotli-Komprimierung bevorzugt.
  • DISABLED (Standard): Komprimierung wird deaktiviert.

Innerhalb weniger Minuten wird Ihre Konfiguration an alle Edge-Standorte verteilt. Komprimierbare Inhalte, die vom Backend bereitgestellt werden, werden komprimiert, bevor sie an den Client gesendet werden.

Komprimierungsmodi

Der Standardkomprimierungsmodus ist DISABLED.

Im AUTOMATIC-Modus kann Cloud CDN die beste Komprimierungsmethode anhand der folgenden Kriterien auswählen:

  • Die vom Client akzeptierte Codierung
  • Erwartetes Komprimierungsverhältnis der Antwort
  • Cloud CDN-Komprimierungsgeschwindigkeit (Durchsatz)

Mit Brotli kann die Downloadgröße für die meisten Inhaltstypen im Vergleich zu gzip um 10% bis 20 % reduziert werden, bei einer ähnlichen Dekomprimierungsleistung. Dadurch ist es insgesamt schneller, wenn man die Download- und Dekomprimierungsgeschwindigkeit auf dem Client berücksichtigt.

Cloud CDN gibt die ausgewählte Komprimierungsmethode als gzip oder brotli im Content-Encoding-Header der Antwort an.

Cloud CDN bestimmt die Komprimierungsstufe, um die Gesamtgröße des Downloads und die CPU-Kosten auf dem Client auszugleichen. Höhere Komprimierungsstufen profitieren nicht immer von der Leistung, insbesondere auf Mobilgeräten mit geringerer Leistung.

Wenn Cloud CDN den Inhalt zum ersten Mal komprimiert, wird der Content-Length-Header aus der Antwort entfernt. Dies ist erforderlich, damit die Antwort so schnell wie möglich bereitgestellt werden kann, da die vollständige Inhaltslänge unbekannt ist, bis die gesamte Antwort komprimiert wurde. Nachdem eine Antwort komprimiert und im Cache gespeichert wurde, kann Cloud CDN den Header Content-Length in nachfolgende Antworten einfügen. Bei HTTP/1.1 und früheren Versionen verwendet Cloud CDN Transfer-Encoding: chunked in der Antwort, wenn Content-Length nicht verwendet wird.

Wann wird eine Antwort komprimiert?

Wenn eine Anfrage einen Accept-Encoding-Header hat, der explizit die Unterstützung für gzip- oder Brotli-Algorithmen auflistet, werden nicht komprimierte Antworten, die vom Back-End (Ursprung) mit einem Content-Type-Header bereitgestellt werden, der den komprimierbaren Inhaltstypen entspricht, entsprechend mit gzip oder Brotli komprimiert. Wenn eine Anfrage keinen Accept-Encoding-Header oder Accept-Encoding: * enthält, wird die Antwort nicht komprimiert.

Bei einem Accept-Encoding-Header in einer Clientanfrage wird die Antwort beispielsweise gemäß den Informationen in der folgenden Tabelle komprimiert (oder nicht):

Anfrageheader Accept-Encoding Antwortcodierung
gzip, compress, br Brotli (br)
deflate Nicht komprimiert
deflate, gzip gzip
identity Nicht komprimiert
* Nicht komprimiert

Komprimierbare Inhaltstypen

Die dynamische Komprimierung gilt für die folgenden MIME-Typen, die auf dem HTTP-Antwortheader Content-Type basieren. Antworten ohne Content-Type-Antwortheader werden nicht komprimiert.

Zu den gängigen Inhaltstypen und ihren MIME-Typen gehören:

  • HTML-Inhalt: text/html
  • Stylesheets: text/css
  • JavaScript: application/javascript
  • JSON: application/json
  • HLS-Playlisten: application/x-mpegURL oder application/vnd.apple.mpegURL
  • DASH-Manifeste: application/dash+xml

In der folgenden Tabelle ist zusammengefasst, wie sich der MIME-Typ auf die Komprimierung auswirkt.

  Komprimierbare MIME-Typen
Genaue Übereinstimmung application/x-javascript
application/x-sdch-dictionary
application/javascript
application/xml
application/csv
application/json
application/json+protobuf
application/Sign-Exchange
application/vnd.apple.mpegurl
application/wasm
application/x-plist
application/x-protovdash-image/xml-bild/de/x-protovdash-bild
x-x-protovdash-v












Schemaabgleich application/*+json
application/*+xml
application/*mpegURL
text/*

Bild- und Videoformate (z. B. image/jpeg, image/png und video/mpeg4) sind fast immer komprimiert, sodass sie von Cloud CDN nicht komprimiert werden. Durch die erneute Kompression einer bereits komprimierten Antwort wird die Dateigröße selten reduziert. Außerdem können Clients ein unerwartetes Verhalten aufweisen, wenn sie eine Antwort dieser Art erhalten.

Wann wird eine Antwort nicht komprimiert?

Die dynamische Komprimierung komprimiert eine Antwort nicht, wenn die Antwort eine oder mehrere der folgenden Eigenschaften aufweist:

  • Die Antwort hat keinen Content-Type-Header, der mit einem komprimierbaren Inhaltstyp übereinstimmt.
  • Sie hat keinen Content-Length-Header.
  • Sie hat einen Content-Encoding-Header.
  • Sie ist kleiner als 1 KiB.

    Die Zeit, die für das Komprimieren und Dekomprimieren aufgewendet wird, verschiebt häufig alle Vorteile. Es müssen weniger Inhalte komprimiert werden, was die Effektivität der Komprimierung beeinträchtigen und zu einem niedrigeren Komprimierungsverhältnis führen kann.

  • Sie ist größer als 10 MiB.

  • Sie hat einen Cache-Control: no-transform-Header.

  • Sie hat einen Vary: Accept-Encoding-Header.

Bereichsanfragen

Wenn Cloud CDN eine Antwort komprimiert, fügt Cloud CDN einen Accept-Ranges: none-Header hinzu und ersetzt alle vorhandenen Accept-Ranges-Header. Cache-Treffer für solche Antworten ignorieren Range-Header.

Dadurch wird verhindert, dass den Clients falsche Teilinhalte bereitgestellt werden, da nicht sicher sein kann, ob ein Client einen Bytebereich von der komprimierten oder unkomprimierten Form einer Ressource erwartet.

ETags

Wenn die dynamische Komprimierung eine Antwort komprimiert, werden alle starken ETag-Header gemäß RFC 7232, Abschnitt 2.3 schwächen. Beispiel: ETag: "xyzzy" wird durch ETag: W/"xyzzy" ersetzt.

Vary-Header

Wenn eine Antwort bereitgestellt wird, die (abhängig von der Anfrage) komprimiert werden könnte, fügt Cloud CDN der Antwort den Header Vary: Accept-Encoding hinzu.

Zusammenfassung der Antwortänderungen

In der folgenden Tabelle werden die Änderungen zusammengefasst, die Cloud CDN nach der Komprimierung an den Headern einer Antwort vornimmt:

Antwortheader Headerwert nach der Komprimierung
Inhaltscodierung Legen Sie dafür gzip oder brotli fest.
ETag Jedes starke Entitäts-Tag wird durch eine abgeschwächte Version ersetzt, die durch das Präfix W/ angegeben wird.
Bereiche akzeptieren Legen Sie den Wert none fest.
Content-Length Kann vollständig entfernt werden oder, falls vorhanden, auf die Länge des komprimierten Textinhalts festgelegt.
Übertragungscodierung Wenn Cloud CDN Content-Length bei HTTP/1.1 und älteren Protokollen entfernt, wird dieser Header mit dem Wert Aufgeteilt hinzugefügt und der Antworttext wird aufgeteilt.

Logging

Die Cloud CDN-Logs enthalten im jsonPayload das Feld compressionStatus, das angibt, ob die Antwort vom Load-Balancer komprimiert wurde, sowie den Komprimierungstyp.

{
  insertId: "1c02hw9g3gjay67"
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
    statusDetails: "response_sent_by_backend"
    cacheId: "IAD-862d661f"
    compressionStatus: "br"
  }
}

Abrechnung

Wenn eine Antwort durch Cloud CDN oder Cloud Load Balancing komprimiert wird, wird die entsprechende ausgehende Cache-Datenübertragung bzw. ausgehende Internetdatenübertragung mit den endgültigen komprimierten Byte verglichen, die an den Client gesendet wurden.

Wenn Sie eine große Menge an komprimierbaren Antworten bereitstellen, kann dies zu geringeren monatlichen Gebühren für die ausgehende Datenübertragung führen und die Leistung für Endnutzer steigern.

Messwerte

Wenn die Komprimierung aktiviert ist, meldet der vorhandene https/response_bytes_count-Messwert unter loadbalancing.googleapis.com die komprimierte Antwortgröße.

Sie können mit einem Rückgang der Gesamtzahl der Antwortbyte (und des Durchsatzes bei der ausgehenden Datenübertragung) rechnen.

Wenn Sie eine große Menge an textbasierten Inhalten bereitstellen, die gut komprimiert sind, z. B. HTML, CSS, JavaScript oder JSON, kann es zu einem starken Rückgang der Antwortbyte kommen.

Weitere Informationen finden Sie unter Monitoring.

Nächste Schritte