Dynamische Komprimierung aktivieren

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

Durch die Größenreduzierung wird das Herunterladen wichtiger Assets wie Stylesheets (CSS), Skripts (JavaScript) und Videomanifeste (HLS/DASH) beschleunigt. Dadurch können die Seitenladezeit und die Startzeiten von Videos erheblich reduziert werden.

Große Live-Videoplaylists (Manifeste) haben eine beträchtliche Menge an wiederkehrenden Daten und Abrufen, einschließlich des Host- und 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.

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

Funktionsweise der dynamischen Komprimierung

Wenn die dynamische Komprimierung aktiviert ist, können komprimierbare Inhalte, die vom Ursprung bereitgestellt werden, komprimiert werden, bevor sie gesendet werden, wenn der Client einen der unterstützten Komprimierungsalgorithmen (br oder gzip) akzeptiert.

Media CDN fügt allen für die Komprimierung infrage kommenden Antworten einen Vary: Accept-Encoding-Header hinzu. Weitere Informationen finden Sie unter Nicht komprimierbare Inhalte.

Wenn der Accept-Encoding-Header der Anfrage außerdem eine Präferenz für komprimierte Inhalte angibt, indem br oder gzip angegeben wird (und optional ein q-Parameter ungleich null enthalten ist), führt Media CDN Folgendes aus:

  • Entfernt den Content-Length-Header aus der Antwort. Dies ist erforderlich, damit die Antwort so schnell wie möglich bereitgestellt werden kann, da die vollständige Inhaltslänge erst bekannt ist, wenn die gesamte Antwort komprimiert wurde. Bei HTTP/1.1 und früheren Versionen verwendet Media CDN Transfer-Encoding: chunked in der Antwort, wenn Content-Length nicht verwendet wird.

    Nachdem eine Antwort komprimiert und im Cache gespeichert wurde, kann Media CDN den Content-Length-Header in nachfolgende Antworten einfügen und den Wert auf die Länge des komprimierten Antworttexts festlegen.

  • Legt Accept-Ranges auf none fest. Dies informiert Clients darüber, dass Bereichsanfragen für diese Ressource ignoriert werden.

  • Schwächt alle starken ETag-Antwortheader gemäß RFC 9110, Abschnitt 8.8.3. Beispiel: ETag: "xyzzy" wird durch ETag: W/"xyzzy" ersetzt.

  • Legt den Content-Encoding-Header auf br oder gzip fest, was den ausgewählten Komprimierungsalgorithmus angibt.

    Media CDN wählt den besten Komprimierungsalgorithmus basierend auf dem erwarteten Komprimierungsverhältnis der Antwort und der Komprimierungsgeschwindigkeit oder dem Durchsatz aus.

    • Die Brotli-Komprimierung wird verwendet, wenn der Client sie unterstützt, auch wenn andere Komprimierungsalgorithmen höhere q-Werte im Accept-Encoding-Header haben.

    • HLS-Manifeste werden nur mit gzip komprimiert.

    Media CDN bestimmt die Komprimierungsstufe, um die Gesamtgröße des Downloads und die CPU-Kosten auf dem Client auszugleichen. Höhere Komprimierungsstufen wirken sich nicht immer positiv auf die Leistung aus, insbesondere auf Mobilgeräten mit geringerer Leistung.

Dynamische Komprimierung konfigurieren

Sie können die dynamische Komprimierung für Routen aktivieren, die Anfragen verarbeiten.

Hinweise

Gehen Sie dazu so vor:

Dynamische Komprimierung für eine Routenregel aktivieren

Der Komprimierungsmodus für eine Routenregel ist standardmäßig deaktiviert.

Wenn Sie den Modus auf „Automatisch“ festlegen, wird die dynamische Komprimierung für jede infrage kommende Antwort aktiviert. Außerdem wird Media CDN angewiesen, automatisch den besten Komprimierungsalgorithmus auszuwählen.

So aktivieren Sie die dynamische Komprimierung:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

    Zum Media CDN

  2. Klicken Sie auf den Namen des Dienstes, für den Sie eine Routenregel konfigurieren möchten, um die Seite Details des Dienstes zu öffnen.

  3. Klicken Sie auf die Schaltfläche Bearbeiten, um in den Bearbeitungsmodus zu wechseln.

  4. Klicken Sie auf Weiter, um zum Abschnitt Routing zu gelangen.

  5. Wenn Sie eine Hostregel bearbeiten möchten, klicken Sie auf den Pfeil, um sie zu maximieren.

  6. Wenn Sie eine Routenregel bearbeiten möchten, klicken Sie in der entsprechenden Zeile auf Bearbeiten.

  7. Klicken Sie im Bereich Routingregel bearbeiten auf Erweiterte Konfigurationen.

  8. Optional: Fügen Sie unter Routenaktion ein CDN-Richtlinien-Element hinzu.

    Mit einer CDN-Richtlinie kann Media CDN Inhalte einmal komprimieren und mehrmals bereitstellen. So sparen Sie Bandbreite und beschleunigen die Bereitstellung.

  9. Wählen Sie im Abschnitt Dynamische Komprimierung die Option Komprimierung aktivieren aus.

  10. Klicken Sie auf Speichern, um die Routenregel zu speichern.

  11. Klicken Sie auf Dienst aktualisieren, um die Änderungen am Dienst zu speichern.

gcloud und YAML

  1. Exportieren Sie Ihre Media CDN-Konfiguration in eine YAML-Datei. Führen Sie den Befehl gcloud edge-cache services export aus.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: der Name Ihres Dienstes
    • FILENAME : der Name Ihrer YAML-Datei
  2. Legen Sie in der Routendefinition in der YAML-Datei unter routeAction compressionMode auf AUTOMATIC fest, wie im folgenden Beispiel gezeigt:

    routing:
    hostRules:
    - hosts:
      - media.example.com
      pathMatcher: routes
    pathMatchers:
    - name: routes
      routeRules:
        - priority: 2
    origin: origin1
    matchRules:
    - pathTemplateMatch: "/**.m3u8" # HLS playlists
    - pathTemplateMatch: "/**.mpd" # DASH manifests
    routeAction:
      cdnPolicy:
        defaultTtl: 5s
      compressionMode: AUTOMATIC
    
  3. Wenn Sie den Dienst aktualisieren möchten, importieren Sie Ihre Media CDN-Konfiguration aus der YAML-Datei. Führen Sie den Befehl gcloud edge-cache services import aus.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Terraform

Das folgende Terraform-Snippet zeigt eine Routenregel mit aktivierter dynamischer Komprimierung.

route_rule {
  description = "a route rule with dynamic compression, priority=2 (high)"
  priority    = 2
  match_rule {
    path_template_match = "/**.m3u8" # HLS playlists
  }
  match_rule {
    path_template_match = "/**.mpd" # DASH manifests
  }
  origin = google_network_services_edge_cache_origin.default.name
  route_action {
    cdn_policy {
      cache_mode = "FORCE_CACHE_ALL"
      client_ttl = "300s"
    }
    compression_mode = "AUTOMATIC"
  }
  header_action {
    response_header_to_add {
      header_name  = "x-cache-status"
      header_value = "{cdn_cache_status}"
    }
  }
}

Ihre Konfiguration wird in Kürze an alle Edge-Standorte weitergegeben.

Wenn die dynamische Komprimierung für eine Route aktiviert ist und die neue Konfiguration auf den Produktionsmaschinen wirksam wird, beginnt Media CDN mit der Komprimierung geeigneter Antworten, auch wenn unkomprimierte Versionen im Cache vorhanden sind. Während Media CDN neue Inhalte abruft und komprimiert, kann es zu einem vorübergehenden Anstieg des Traffics zu Ihrem Ursprungsserver kommen.

Dynamische Komprimierung für eine Routenregel deaktivieren

So deaktivieren Sie die dynamische Komprimierung:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

    Zum Media CDN

  2. Klicken Sie auf den Namen des Dienstes, für den Sie die Weiterleitungsregel konfigurieren möchten, um die Seite Details zu öffnen.

  3. Klicken Sie auf die Schaltfläche Bearbeiten, um in den Bearbeitungsmodus zu wechseln.

  4. Klicken Sie auf Weiter, um zum Abschnitt Routing zu gelangen.

  5. Wenn Sie eine Hostregel bearbeiten möchten, klicken Sie auf den Pfeil, um sie zu maximieren.

  6. Wenn Sie eine Routenregel bearbeiten möchten, klicken Sie in der entsprechenden Zeile auf Bearbeiten.

  7. Klicken Sie im Bereich Routingregel bearbeiten auf Erweiterte Konfigurationen.

  8. Deaktivieren Sie im Abschnitt Dynamische Komprimierung die Option Komprimierung aktivieren.

  9. Klicken Sie auf Speichern, um die Routenregel zu speichern.

  10. Klicken Sie auf Dienst aktualisieren, um die Änderungen am Dienst zu speichern.

gcloud und YAML

  1. Exportieren Sie Ihre Media CDN-Konfiguration in eine YAML-Datei. Führen Sie den Befehl gcloud edge-cache services export aus.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: der Name Ihres Dienstes
    • FILENAME : der Name Ihrer YAML-Datei
  2. Legen Sie in der Routendefinition in der YAML-Datei compressionMode auf DISABLED fest.

  3. Wenn Sie den Dienst aktualisieren möchten, importieren Sie Ihre Media CDN-Konfiguration aus der YAML-Datei. Führen Sie den Befehl gcloud edge-cache services import aus.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Wenn bei der dynamischen Komprimierung für eine bestimmte Route Probleme auftreten, z. B. Kompatibilitätsprobleme mit bestimmten Clients (z. B. Smart-TVs oder Streaminggeräten), können Sie die dynamische Komprimierung deaktivieren, damit Media CDN auf dieser Route keine komprimierten Inhalte bereitstellt.

Wenn Sie die dynamische Komprimierung für eine Route deaktivieren, stellt Media CDN keine komprimierten Inhalte mehr aus dem Cache bereit. Alle zuvor im Cache gespeicherten komprimierten Antworten werden ungültig und das CDN ruft unkomprimierte Versionen von Ihrem Ursprung ab.

Komprimierbare Inhaltstypen

Die dynamische Komprimierung gilt für die folgenden MIME-Typen, die auf dem HTTP-Antwortheader Content-Type basieren. Antworten ohne Content-Type-Header 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/csv
application/javascript
application/json
application/json+protobuf
application/signed-exchange
application/wasm
application/x-javascript
application/x-nacl
application/x-plist
application/x-pnacl
application/x-protobuf
application/x-protobuffer
application/x-sdch-dictionary
application/xml
audio/mpegURL
font/eot
font/otf
font/ttf
image/pwg-raster
image/svg+xml
image/vnd.microsoft.icon
image/x-icon
video/vnd.mpeg.dash.mpd
Schemaabgleich application/*+json
application/*+xml
application/*mpegURL
text/*

Bild- und Videoformate (z. B. image/jpeg, image/png und video/mpeg4) sind fast immer komprimiert. Daher werden sie von Media CDN nicht komprimiert. 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.

Nicht komprimierbare Antworten

Media CDN komprimiert eine Antwort nicht, wenn die Antwort eine oder mehrere der folgenden Eigenschaften aufweist:

  • Die Antwort hat keinen Content-Type-Header, der einem komprimierbaren Inhaltstyp entspricht.
  • Die Antwort hat keinen Content-Length-Header.
  • Die Antwort hat einen Content-Encoding-Header. Das bedeutet, dass der Ursprung die Antwort bereits komprimiert hat. Media CDN darf also keine zusätzliche dynamische Komprimierung durchführen.
  • Die Antwort ist kleiner als 1 KiB.

    Die Zeit, die für das Komprimieren und Dekomprimieren aufgewendet wird, verschiebt häufig alle Vorteile. Außerdem gibt es weniger Inhalte, die komprimiert werden können, wodurch die Effektivität der Komprimierung reduziert werden kann und ein niedrigeres Komprimierungsverhältnis sein kann.

  • Die Antwort ist größer als 1 MiB.

    Media CDN komprimiert Antworten bis zur Größe, die für das Caching von Objekten ohne Bytebereichscaching zulässig ist.

  • Die Antwort hat einen Cache-Control: no-transform-Header.

  • Die Antwort enthält einen Vary: Accept-Encoding-Header. Das bedeutet, dass keine dynamische Komprimierung erforderlich ist, da der Ursprung die Antwort komprimieren kann.

Logging und Monitoring

Wenn die Komprimierung aktiviert ist, meldet der vorhandene https/response_bytes_count-Messwert unter edgecache.googleapis.com/EdgeCacheRouteRule die komprimierte Antwortgröße. Bei komprimierbaren Inhalten ist mit einem Rückgang der Gesamtantwortbyte und des ausgehenden Durchsatzes zu rechnen.

Die Media CDN-Logs enthalten das Feld compressionAlgorithmApplied in jsonPayload, das angibt, ob die Antwort vom Load-Balancer komprimiert wurde sowie den Komprimierungstyp.

{
  insertId: "1c02hw9g3gjay67"
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
    cacheId: "IAD-862d661f",
    cacheStatus": "hit,stale",
    compressionAlgorithmApplied: "br"
  },
}

Abrechnung

Wenn eine Antwort von Media CDN komprimiert wird, basieren die entsprechenden Gebühren für ausgehenden Cache- oder Internetdatentransfer auf den endgültigen komprimierten Byte, die an den Client gesendet werden.

Wenn Sie eine große Menge komprimierbarer Antworten bereitstellen, kann dies zu einer Reduzierung der monatlichen Gebühren für ausgehenden Datentransfer sowie zu einer höheren Leistung für Endnutzer führen.

Nächste Schritte