Komprimierte Dateien bereitstellen - Amazon CloudFront

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Komprimierte Dateien bereitstellen

Wenn angeforderte Objekte komprimiert werden, können Downloads schneller sein, da die Objekte kleiner sind – in einigen Fällen weniger als ein Viertel der Größe des Originals. Schnellere Downloads können zu einem schnelleren Rendern von Webseiten für Ihre Zuschauer führen, insbesondere für JavaScript und CSS-Dateien. Darüber hinaus basieren die Kosten für die CloudFront Datenübertragung auf der Gesamtmenge der bereitgestellten Daten. Die Bereitstellung komprimierter Objekte kann kostengünstiger sein als die Bereitstellung unkomprimierter Objekte.

So konfigurieren CloudFront , dass Objekte komprimiert werden

Um das Komprimieren von Objekten CloudFront zu konfigurieren, aktualisieren Sie das Cache-Verhalten, das Sie für die komprimierten Objekte bereitstellen möchten.

So konfigurieren Sie CloudFront die Komprimierung von Objekten (Konsole)
  1. Melden Sie sich an der CloudFront-Konsole an.

  2. Wählen Sie Ihre Distribution und dann das zu bearbeitende Verhalten aus.

  3. Wählen Sie für die Einstellung Objekte automatisch komprimieren die Option Ja.

  4. Verwenden Sie eine Cache-Richtlinie, um die Cache-Einstellungen festzulegen, und aktivieren Sie sowohl die Gzip - als auch die Brotli-Komprimierungsformate.

  5. Setzen Sie die TTL-Einstellungen in der Cache-Richtlinie auf einen Wert größer als Null. Wenn Sie den Mindest-TTL Wert auf Null setzen, CloudFront werden komprimierte Inhalte nicht zwischengespeichert.

Hinweise
  • Sie müssen Cache-Richtlinien verwenden, um die Brotli-Komprimierung verwenden zu können. Brotli unterstützt keine älteren Cache-Einstellungen.

  • Um die Komprimierung mithilfe AWS CloudFormationder CloudFrontAPI zu aktivieren, setzen Sie die EnableAcceptEncodingBrotli Parameter CompressEnableAcceptEncodingGzip, auf. true

Informationen zur CloudFront Komprimierung von Objekten finden Sie im folgenden Abschnitt.

Wie funktioniert die CloudFront Komprimierung

  1. Ein Viewer fordert ein Objekt an. Der Viewer fügt den HTTP-Header Accept-Encoding in die Anforderung ein. Die Header-Werte fügen gzip, br oder beides ein. Dadurch wird angezeigt, dass der Viewer komprimierte Objekte unterstützt. Wenn der Viewer sowohl Gzip als auch Brotli unterstützt, CloudFront verwendet er Brotli.

    Anmerkung

    Die Webbrowser Chrome und Firefox unterstützen die Brotli-Komprimierung nur, wenn die Anfrage über HTTPS gesendet wird. Sie unterstützen Brotli nicht mit HTTP-Anfragen.

  2. Sucht am Edge-Standort im CloudFront Cache nach einer komprimierten Kopie des angeforderten Objekts.

  3. Führt je nachdem, ob sich das komprimierte Objekt im Cache befindet oder CloudFront nicht, eine der folgenden Aktionen aus:

    • Wenn sich das komprimierte Objekt bereits im Cache befindet, wird das Objekt an den Viewer CloudFront gesendet und die verbleibenden Schritte übersprungen.

    • Wenn sich das komprimierte Objekt nicht im Cache befindet, CloudFront leitet die Anfrage an den Ursprung weiter.

    Anmerkung

    Wenn sich bereits eine unkomprimierte Kopie des Objekts im Cache befindet, wird sie CloudFront möglicherweise an den Betrachter gesendet, ohne die Anfrage an den Ursprung weiterzuleiten. Dies kann beispielsweise passieren, wenn die Komprimierung CloudFront zuvor übersprungen wurde. In diesem Fall wird das unkomprimierte Objekt CloudFront zwischengespeichert und solange bereitgestellt, bis das Objekt abläuft, entfernt oder ungültig gemacht wird.

  4. Wenn der Ursprung ein komprimiertes Objekt zurückgibt (wie durch den Content-Encoding Header in der HTTP-Antwort angegeben), CloudFront sendet er das komprimierte Objekt an den Viewer, fügt es dem Cache hinzu und überspringt die verbleibenden Schritte. CloudFront komprimiert das Objekt nicht erneut.

  5. Wenn der Ursprung ein unkomprimiertes Objekt CloudFront ohne den Content-Encoding Header in der HTTP-Antwort zurückgibt, CloudFront wird dann bestimmt, ob das Objekt komprimiert werden kann. Weitere Informationen finden Sie unter Wann werden CloudFront Objekte komprimiert.

  6. Wenn das Objekt komprimiert werden kann, wird es CloudFront komprimiert, an den Viewer gesendet und anschließend dem Cache hinzugefügt.

  7. Wenn es nachfolgende Viewer-Anfragen für dasselbe Objekt CloudFront gibt, wird die erste zwischengespeicherte Version zurückgegeben. Wenn ein Viewer beispielsweise ein bestimmtes zwischengespeichertes Objekt anfordert, das Gzip-Komprimierung verwendet, und der Viewer das Gzip-Format akzeptiert, geben nachfolgende Anfragen an dasselbe Objekt immer die Gzip-Version zurück, auch wenn der Viewer sowohl Brotli als auch Gzip akzeptiert.

Einige benutzerdefinierte Ursprünge können auch Objekte komprimieren. Ihr Origin ist möglicherweise in der Lage, Objekte zu komprimieren, die nicht komprimiert werden. CloudFront Weitere Informationen finden Sie unter Dateitypen, die von CloudFront komprimiert werden.

Wann werden CloudFront Objekte komprimiert

Die folgende Liste enthält weitere Informationen darüber, wann Objekte CloudFront komprimiert werden.

Anforderung verwendet HTTP 1.0

Wenn eine Anfrage HTTP 1.0 CloudFront verwendet, CloudFront wird der Accept-Encoding Header entfernt und das Objekt in der Antwort nicht komprimiert.

Accept-Encoding-Header der Anforderung

Wenn der Accept-Encoding Header in der Viewer-Anfrage fehlt oder wenn er keinen Wert enthält gzip oder br keinen Wert enthält, CloudFront wird das Objekt in der Antwort nicht komprimiert. Wenn der Accept-Encoding Header zusätzliche Werte enthältdeflate, z. B. CloudFront werden diese entfernt, bevor die Anfrage an den Ursprung weitergeleitet wird.

Wenn für die Komprimierung von Objekten konfiguriert CloudFront ist, nimmt er den Accept-Encoding Header automatisch in den Cache-Schlüssel und in Ursprungsanfragen auf.

Der Inhalt wird bereits zwischengespeichert, wenn Sie das Komprimieren von CloudFront Objekten konfigurieren

CloudFront komprimiert Objekte, wenn sie vom Ursprung abgerufen werden. Wenn Sie CloudFront das Komprimieren von Objekten konfigurieren, werden Objekte, die bereits an Kantenpositionen zwischengespeichert sind, CloudFront nicht komprimiert. Wenn ein zwischengespeichertes Objekt an einem Edge-Standort abläuft und eine weitere Anforderung für das Objekt an Ihren Ursprung CloudFront weiterleitet, wird das Objekt außerdem CloudFront nicht komprimiert, wenn Ihr Ursprung den HTTP-Statuscode 304 zurückgibt. Das bedeutet, dass der Edge-Standort bereits über die neueste Version des Objekts verfügt. Wenn Sie Objekte komprimieren CloudFront möchten, die bereits an Kantenpositionen zwischengespeichert sind, müssen Sie diese Objekte für ungültig erklären. Weitere Informationen finden Sie unter Machen Sie Dateien ungültig, um Inhalte zu entfernen.

Ursprung ist bereits für die Kompression von Objekten konfiguriert

Wenn Sie das Komprimieren von Objekten konfigurieren CloudFront und der Ursprung auch Objekte komprimiert, sollte der Ursprung einen Header enthalten. Content-Encoding Dieser Header weist darauf hin CloudFront , dass das Objekt bereits komprimiert ist. Wenn eine Antwort von einem Ursprung den Content-Encoding Header enthält, wird das Objekt CloudFront nicht komprimiert, unabhängig vom Wert des Headers. CloudFrontsendet die Antwort an den Betrachter und speichert das Objekt an der Edge-Position im Cache.

Dateitypen, die CloudFront komprimiert werden

Eine vollständige Liste finden Sie hier: Dateitypen, die von CloudFront komprimiert werden.

Größe der Objekte, die CloudFront komprimiert werden

CloudFront komprimiert Objekte mit einer Größe zwischen 1.000 Byte und 10.000.000 Byte.

Content-Length-Header

Der Ursprung muss in der Antwort einen Content-Length Header enthalten, CloudFront anhand dessen bestimmt wird, ob die Größe des Objekts in dem Bereich liegt, der komprimiert wird. CloudFront Wenn der Content-Length Header fehlt, einen ungültigen Wert enthält oder einen Wert außerhalb des Größenbereichs für die CloudFront Komprimierung enthält, wird CloudFront das Objekt nicht komprimiert. Weitere Informationen zur Verarbeitung großer Objekte, die den Größenbereich überschreiten können, finden Sie unterWie CloudFront werden Teilanfragen für ein Objekt (BereichGETs) verarbeitet. CloudFront

Den HTTP-Statuscode der Antwort.

CloudFront komprimiert Objekte nur, wenn der HTTP-Statuscode der Antwort 200403, oder 404 lautet.

Antwort hat keinen Körper

Wenn die HTTP-Antwort vom Ursprung keinen Hauptteil hat, gibt es nichts, was komprimiert werden CloudFront könnte.

ETag-Header

CloudFront ändert manchmal den ETag Header in der HTTP-Antwort, wenn Objekte komprimiert werden. Weitere Informationen finden Sie unter ETag-Header-Konvertierung.

CloudFront überspringt die Komprimierung

CloudFront komprimiert Objekte nach bestem Wissen. In seltenen Fällen CloudFront überspringt die Komprimierung eines Objekts bei hoher CloudFront Verkehrsbelastung. CloudFront trifft diese Entscheidung auf der Grundlage einer Vielzahl von Faktoren, einschließlich der Hostkapazität. Wenn die Komprimierung für ein Objekt CloudFront übersprungen wird, wird das unkomprimierte Objekt zwischengespeichert und Benutzern weiterhin zur Verfügung gestellt, bis das Objekt abläuft, entfernt oder ungültig gemacht wird.

Dateitypen, die von CloudFront komprimiert werden

Wenn Sie das Komprimieren von Objekten konfigurieren CloudFront , werden CloudFront nur Objekte komprimiert, die einen der folgenden Werte im Antwort-Header haben: Content-Type

  • application/dash+xml

  • application/eot

  • application/font

  • application/font-sfnt

  • application/javascript

  • application/json

  • application/opentype

  • application/otf

  • application/pdf

  • application/pkcs7-mime

  • application/protobuf

  • application/rss+xml

  • application/truetype

  • application/ttf

  • application/vnd.apple.mpegurl

  • application/vnd.mapbox-vector-tile

  • application/vnd.ms-fontobject

  • application/wasm

  • application/xhtml+xml

  • application/xml

  • application/x-font-opentype

  • application/x-font-truetype

  • application/x-font-ttf

  • application/x-httpd-cgi

  • application/x-javascript

  • application/x-mpegurl

  • application/x-opentype

  • application/x-otf

  • application/x-perl

  • application/x-ttf

  • font/eot

  • font/opentype

  • font/otf

  • font/ttf

  • image/svg+xml

  • text/css

  • text/csv

  • text/html

  • text/javascript

  • text/js

  • text/plain

  • text/richtext

  • text/tab-separated-values

  • text/xml

  • text/x-component

  • text/x-java-source

  • text/x-script

  • vnd.apple.mpegurl

ETag-Header-Konvertierung

Wenn das unkomprimierte Objekt aus dem Ursprung einen gültigen, starken ETag HTTP-Header enthält und das Objekt CloudFront komprimiert, wandelt es CloudFront auch den starken ETag Header-Wert in einen schwachen um und gibt den schwachen ETag ETag Wert an den Viewer zurück. Viewer können den schwachen ETag-Wert speichern und ihn verwenden, um bedingte Anforderungen mit dem HTTP-Header If-None-Match zu senden. Auf diese Weise können Betrachter und der Ursprung die komprimierten und unkomprimierten Versionen eines Objekts als semantisch gleichwertig behandeln, wodurch unnötige Datenübertragungen vermieden werden. CloudFront

Ein gültiger, starker ETag Header-Wert beginnt und endet mit einem doppelten Anführungszeichen ()". Um den starken ETag-Wert in einen schwachen Wert zu konvertieren, fügt CloudFront die Zeichen W/ am Anfang des starken ETag-Werts hinzu.

Wenn das Objekt aus dem Ursprung einen schwachen ETag Header-Wert (einen Wert, der mit den Zeichen beginntW/) enthält, CloudFront ändert dieser Wert nicht und gibt ihn so an den Betrachter zurück, wie er vom Ursprung empfangen wurde.

Wenn das Objekt aus dem Ursprung einen ungültigen ETag Header-Wert enthält (der Wert beginnt nicht mit " oder mitW/), CloudFront wird der ETag Header entfernt und das Objekt ohne den ETag Antwort-Header an den Viewer zurückgegeben.

Weitere Informationen finden Sie auf den folgenden Seiten in den MDN-Webdokumenten: