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 CDNTransfer-Encoding: chunked
in der Antwort, wennContent-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
aufnone
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 durchETag: W/"xyzzy"
ersetzt.Legt den
Content-Encoding
-Header aufbr
odergzip
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 imAccept-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:
Media CDN-Ursprung mit komprimierbaren Inhalten erstellen oder identifizieren, die bereitgestellt werden können.
Erstellen oder identifizieren Sie einen Media CDN-Dienst mit mindestens einer Routingregel.
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
Rufen Sie in der Google Cloud Console die Seite Media CDN auf.
Klicken Sie auf den Namen des Dienstes, für den Sie eine Routenregel konfigurieren möchten, um die Seite Details des Dienstes zu öffnen.
Klicken Sie auf die Schaltfläche Bearbeiten, um in den Bearbeitungsmodus zu wechseln.
Klicken Sie auf Weiter, um zum Abschnitt Routing zu gelangen.
Wenn Sie eine Hostregel bearbeiten möchten, klicken Sie auf den Pfeil, um sie zu maximieren.
Wenn Sie eine Routenregel bearbeiten möchten, klicken Sie in der entsprechenden Zeile auf
Bearbeiten.Klicken Sie im Bereich Routingregel bearbeiten auf Erweiterte Konfigurationen.
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.
Wählen Sie im Abschnitt Dynamische Komprimierung die Option Komprimierung aktivieren aus.
Klicken Sie auf Speichern, um die Routenregel zu speichern.
Klicken Sie auf Dienst aktualisieren, um die Änderungen am Dienst zu speichern.
gcloud und YAML
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 DienstesFILENAME
: der Name Ihrer YAML-Datei
Legen Sie in der Routendefinition in der YAML-Datei unter
routeAction
compressionMode
aufAUTOMATIC
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
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.
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
Rufen Sie in der Google Cloud Console die Seite Media CDN auf.
Klicken Sie auf den Namen des Dienstes, für den Sie die Weiterleitungsregel konfigurieren möchten, um die Seite Details zu öffnen.
Klicken Sie auf die Schaltfläche Bearbeiten, um in den Bearbeitungsmodus zu wechseln.
Klicken Sie auf Weiter, um zum Abschnitt Routing zu gelangen.
Wenn Sie eine Hostregel bearbeiten möchten, klicken Sie auf den Pfeil, um sie zu maximieren.
Wenn Sie eine Routenregel bearbeiten möchten, klicken Sie in der entsprechenden Zeile auf
Bearbeiten.Klicken Sie im Bereich Routingregel bearbeiten auf Erweiterte Konfigurationen.
Deaktivieren Sie im Abschnitt Dynamische Komprimierung die Option Komprimierung aktivieren.
Klicken Sie auf Speichern, um die Routenregel zu speichern.
Klicken Sie auf Dienst aktualisieren, um die Änderungen am Dienst zu speichern.
gcloud und YAML
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 DienstesFILENAME
: der Name Ihrer YAML-Datei
Legen Sie in der Routendefinition in der YAML-Datei
compressionMode
aufDISABLED
fest.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
oderapplication/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.