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

Sie können CloudFront sie verwenden, um bestimmte Objekttypen (Dateien) automatisch zu komprimieren und die komprimierten Objekte bereitzustellen, wenn Viewer (Webbrowser oder andere Clients) sie unterstützen. Viewer geben mit der Accept-Encoding HTTP Kopfzeile an, dass sie komprimierte Objekte unterstützen.

CloudFront kann Objekte mit den Komprimierungsformaten Gzip und Brotli komprimieren. Wenn der Viewer beide Formate unterstützt und beide auf dem erreichten Cache-Server vorhanden sind, wird Brotli bevorzugt. CloudFront Wenn auf dem Cacheserver nur ein Komprimierungsformat vorhanden ist, wird es CloudFront zurückgegeben.

Wenn es aufeinanderfolgende Viewer-Anfragen für dasselbe Objekt CloudFront gibt, wird die erste zwischengespeicherte Version zurückgegeben. Wenn ein Viewer beispielsweise ein bestimmtes Objekt anfordert, das Gzip-Komprimierung verwendet, und das Objekt zwischengespeichert ist 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.

Anmerkung

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

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. Insbesondere bei JavaScript CSS UND-Dateien können schnellere Downloads zu einem schnelleren Rendern von Webseiten für Ihre Benutzer führen. Da die Kosten für die CloudFront Datenübertragung zudem von der Gesamtmenge der bereitgestellten Daten abhängen, kann die Bereitstellung komprimierter Objekte kostengünstiger sein als die Bereitstellung unkomprimierter Objekte.

Einige benutzerdefinierte Ursprünge können auch Objekte komprimieren. Ihr Origin ist möglicherweise in der Lage, Objekte zu komprimieren, die CloudFront nicht komprimiert werden (sieheDateitypen, die von CloudFront komprimiert werden). Wenn Ihr Origin ein komprimiertes Objekt zurückgibt CloudFront, CloudFront erkennt es anhand des Vorhandenseins eines Content-Encoding Headers, dass das Objekt komprimiert ist, und komprimiert das Objekt nicht erneut.

Konfigurieren Sie CloudFront es, um Objekte zu komprimieren

Um das Komprimieren von Objekten CloudFront zu konfigurieren, aktualisieren Sie das Cache-Verhalten, das Sie für die komprimierten Objekte bereitstellen möchten, indem Sie alle folgenden Schritte ausführen:

  1. Stellen Sie sicher, dass die Einstellung Objekte automatisch komprimieren auf Ja gesetzt ist. (In AWS CloudFormation oder der CloudFront API, eingestellt Compress auftrue.)

  2. Verwenden Sie eine Cache-Richtlinie, um Cache-Einstellungen anzugeben, und stellen Sie sicher, dass die Gzip- und Brotli-Einstellungen aktiviert sind. (In AWS CloudFormation oder der CloudFrontAPI, gesetzt EnableAcceptEncodingGzip und EnableAcceptEncodingBrotli bistrue.)

  3. Stellen Sie sicher, dass die TTL Werte in der Cache-Richtlinie auf einen Wert größer als Null gesetzt sind. Wenn Sie die TTL Werte auf Null setzen, ist das Zwischenspeichern komprimierter Inhalte deaktiviert.

Sie können ein Cache-Verhalten mithilfe eines der folgenden Tools aktualisieren:

Wie funktioniert die CloudFront Komprimierung

Wenn Sie CloudFront das Komprimieren von Objekten konfigurieren (siehe vorherigen Abschnitt), funktioniert das wie folgt:

  1. Ein Viewer fordert ein Objekt an. Der Viewer nimmt den Accept-Encoding HTTP Header in die Anfrage auf, und der Header-Wert beinhaltet gzipbr, oder beides. Dadurch wird angezeigt, dass der Viewer komprimierte Objekte unterstützt. Wenn der Viewer sowohl Gzip als auch Brotli unterstützt, CloudFront bevorzugt er Brotli.

    Anmerkung

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

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

  3. Wenn sich das komprimierte Objekt bereits im Cache befindet, wird es CloudFront an den Viewer 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, was durch das Vorhandensein eines Content-Encoding Headers in der HTTP Antwort angezeigt wird, CloudFront sendet er das komprimierte Objekt an den Viewer, fügt es dem Cache hinzu und überspringt den verbleibenden Schritt. CloudFront komprimiert das Objekt nicht erneut.

    Wenn der Ursprung ein unkomprimiertes Objekt zurückgibt CloudFront (die HTTP Antwort enthält keinen Content-Encoding Header), wird CloudFront bestimmt, ob das Objekt komprimierbar ist. Weitere Informationen darüber, wie CloudFront bestimmt wird, ob ein Objekt komprimierbar ist, finden Sie im folgenden Abschnitt.

  5. Wenn das Objekt komprimierbar ist, wird CloudFront es komprimiert, an den Viewer gesendet und dem Cache hinzugefügt. (In seltenen Fällen CloudFront kann die Komprimierung übersprungen und das unkomprimierte Objekt an den Viewer gesendet werden.)

Wann werden Objekte CloudFront komprimiert

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

Die Anfrage verwendet 1.0 HTTP

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 CloudFront keinen Wert enthält, 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.

Dynamischer Inhalt

CloudFront komprimiert dynamische Inhalte nicht immer. Manchmal werden Antworten auf dynamische Inhalte komprimiert und manchmal nicht.

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 Origin-Objekt den HTTP Statuscode 304 zurückgibt, was bedeutet, dass der Edge-Standort bereits über die neueste Version des Objekts verfügt. Wenn Sie Objekte komprimieren CloudFront möchten, die bereits an Edge-Standorten 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 die Konfiguration so konfigurieren CloudFront , dass Objekte komprimiert werden und der Ursprung auch Objekte komprimiert, sollte der Ursprung einen Content-Encoding Header enthalten, der angibt, CloudFront dass das Objekt bereits komprimiert ist. Wenn eine Antwort von einem Ursprung den Content-Encoding Header enthält, CloudFront wird das Objekt 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 der Dateitypen, die CloudFront komprimiert werden, finden Sie unter. 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, CloudFront wird das Objekt nicht komprimiert.

HTTPStatuscode 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 Text 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. 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, wird CloudFront auch der starke ETag Header-Wert in einen schwachen Wert umgewandelt und der schwache ETag ETag Wert wird an den Viewer zurückgegeben. Zuschauer können den schwachen ETag Wert speichern und ihn verwenden, um bedingte Anfragen mit dem If-None-Match HTTP Header 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 reduziert werden. CloudFront

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

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 an den Betrachter zurück, so 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: