Servire file compressi - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Servire file compressi

Quando gli oggetti richiesti sono compressi, i download possono essere più rapidi in quanto gli oggetti sono più piccoli; in alcuni casi, meno di un quarto della dimensione originale. I download più rapidi possono portare a un rendering più rapido delle pagine Web per gli utenti, in particolare per JavaScript i file CSS. Inoltre, il costo del trasferimento dei CloudFront dati si basa sulla quantità totale di dati forniti. Servire oggetti compressi può essere meno costoso che servirli non compressi.

Configura per comprimere CloudFront gli oggetti

CloudFront Per configurare la compressione degli oggetti, aggiorna il comportamento della cache in base al quale desideri utilizzare gli oggetti compressi.

Per configurare CloudFront la compressione degli oggetti (console)
  1. Accedi alla console CloudFront.

  2. Scegli la tua distribuzione e poi scegli il comportamento da modificare.

  3. Per l'impostazione Comprimi automaticamente gli oggetti, scegliete .

  4. Utilizzate una politica di cache per specificare le impostazioni di memorizzazione nella cache e abilitate i formati di compressione Gzip e Brotli.

  5. Imposta le impostazioni TTL nella politica della cache su un valore maggiore di zero. Se imposti il Minimum TTL (TTL minimo) valore su zero, il contenuto compresso CloudFront non verrà memorizzato nella cache.

Note
  • È necessario utilizzare le politiche di cache per utilizzare la compressione Brotli. Brotli non supporta le impostazioni della cache legacy.

  • Per abilitare la compressione utilizzando AWS CloudFormationo l'CloudFrontAPI, imposta i EnableAcceptEncodingBrotli parametriCompress,EnableAcceptEncodingGzip, su. true

Per informazioni su come CloudFront comprime gli oggetti, consultate la sezione seguente.

Come funziona CloudFront la compressione

  1. Un visualizzatore richiede un oggetto. Il visualizzatore include l'intestazione Accept-Encoding HTTP nella richiesta e il valore di intestazione include gzip, br o entrambi. Questo indica che il visualizzatore supporta gli oggetti compressi. Quando il visualizzatore supporta sia Gzip che Brotli, CloudFront usa Brotli.

    Nota

    I browser Web Chrome e Firefox supportano la compressione Brotli solo quando la richiesta viene inviata tramite HTTPS. Non supportano Brotli con le richieste HTTP.

  2. Nella posizione periferica, CloudFront verifica la presenza di una copia compressa dell'oggetto richiesto nella cache.

  3. A seconda che l'oggetto compresso sia o meno nella cache, CloudFront esegue una delle seguenti operazioni:

    • Se l'oggetto compresso è già presente nella cache, CloudFront invia l'oggetto al visualizzatore e salta i passaggi rimanenti.

    • Se l'oggetto compresso non è nella cache, CloudFront inoltra la richiesta all'origine.

    Nota

    Se una copia non compressa dell'oggetto è già nella cache, CloudFront potrebbe inviarla al visualizzatore senza inoltrare la richiesta all'origine. Ad esempio, ciò può accadere quando CloudFront in precedenza si è saltata la compressione. Quando ciò accade, CloudFront memorizza nella cache l'oggetto non compresso e continua a utilizzarlo fino alla scadenza, all'eliminazione o all'invalidazione dell'oggetto.

  4. Se l'origine restituisce un oggetto compresso (come indicato dall'Content-Encodingintestazione nella risposta HTTP), CloudFront invia l'oggetto compresso al visualizzatore, lo aggiunge alla cache e salta i passaggi rimanenti. CloudFront non comprime nuovamente l'oggetto.

  5. Se l'origine restituisce un oggetto non compresso CloudFront senza l'Content-Encodingintestazione nella risposta HTTP, CloudFront determina se l'oggetto può essere compresso. Per ulteriori informazioni, consulta Quando comprime gli oggetti CloudFront .

  6. Se l'oggetto può essere compresso, lo CloudFront comprime, lo invia al visualizzatore e quindi lo aggiunge alla cache.

  7. Se ci sono richieste successive del visualizzatore per lo stesso oggetto, CloudFront restituisce la prima versione memorizzata nella cache. Ad esempio, se un visualizzatore richiede uno specifico oggetto memorizzato nella cache che utilizza la compressione Gzip e il visualizzatore accetta il formato Gzip, le richieste successive allo stesso oggetto restituiranno sempre la versione Gzip, anche se il visualizzatore accetta sia Brotli che Gzip.

Alcune origini personalizzate possono anche comprimere gli oggetti. La tua origine potrebbe essere in grado di comprimere oggetti che non vengono compressi. CloudFront Per ulteriori informazioni, consulta Tipi di file che CloudFront comprime.

Quando comprime gli oggetti CloudFront

L'elenco seguente fornisce ulteriori informazioni su quando CloudFront comprime gli oggetti.

La richiesta utilizza HTTP 1.0

Se una richiesta CloudFront utilizza HTTP 1.0, CloudFront rimuove l'Accept-Encodingintestazione e non comprime l'oggetto nella risposta.

Intestazione della richiesta Accept-Encoding

Se l'Accept-Encodingintestazione non è presente nella richiesta del visualizzatore o se non contiene gzip o br non è un valore, CloudFront non comprime l'oggetto nella risposta. Se l'Accept-Encodingintestazione include valori aggiuntivi, ad esempiodeflate, li CloudFront rimuove prima di inoltrare la richiesta all'origine.

Quando CloudFront è configurato per comprimere gli oggetti, include automaticamente l'Accept-Encodingintestazione nella chiave della cache e nelle richieste di origine.

Il contenuto viene già memorizzato nella cache quando si configura CloudFront la compressione degli oggetti

CloudFront comprime gli oggetti quando li recupera dall'origine. Quando si configura CloudFront per comprimere oggetti, CloudFront non comprime gli oggetti che sono già memorizzati nella cache nelle posizioni laterali. Inoltre, quando un oggetto memorizzato nella cache scade in una posizione CloudFront periferica e inoltra un'altra richiesta per l'oggetto all'origine, CloudFront non comprime l'oggetto quando l'origine restituisce un codice di stato HTTP 304. Ciò significa che l'edge location dispone già della versione più recente dell'oggetto. Se si desidera CloudFront comprimere oggetti che sono già memorizzati nella cache nelle posizioni dei bordi, è necessario invalidare tali oggetti. Per ulteriori informazioni, consulta Invalida i file per rimuovere il contenuto.

L'origine è già configurata per comprimere gli oggetti

Se configurate CloudFront per comprimere gli oggetti e l'origine comprime anche gli oggetti, l'origine deve includere un'intestazione. Content-Encoding Questa intestazione indica CloudFront che l'oggetto è già compresso. Quando una risposta da un'origine include l'Content-Encodingintestazione, CloudFront non comprime l'oggetto, indipendentemente dal valore dell'intestazione. CloudFrontinvia la risposta al visualizzatore e memorizza l'oggetto nella cache nella posizione del bordo.

Tipi di file che comprimono CloudFront

Per un elenco completo, consulta Tipi di file che CloudFront comprime.

Dimensioni degli oggetti che si comprimono CloudFront

CloudFront comprime oggetti di dimensioni comprese tra 1.000 e 10.000.000 di byte.

Content-Length Intestazione

L'origine deve includere un'Content-Lengthintestazione nella risposta, che viene CloudFront utilizzata per determinare se la dimensione dell'oggetto rientra nell'intervallo di compressione. CloudFront Se l'Content-Lengthintestazione è mancante, contiene un valore non valido o contiene un valore al di fuori dell'intervallo di dimensioni che CloudFront comprime, CloudFront non comprime l'oggetto. Per ulteriori informazioni su come CloudFront elabora oggetti di grandi dimensioni che possono superare l'intervallo di dimensioni, vedere. Come CloudFront elabora le richieste parziali per un oggetto (intervalloGETs)

Il codice di stato HTTP per la risposta

CloudFront comprime gli oggetti solo quando il codice di stato HTTP della risposta è 200403, o404.

La risposta non ha corpo

Quando la risposta HTTP dall'origine non ha un corpo, non c'è nulla CloudFront da comprimere.

ETag Intestazione

CloudFront a volte modifica l'ETagintestazione nella risposta HTTP quando comprime gli oggetti. Per ulteriori informazioni, consulta Conversione dell'intestazione ETag.

CloudFront salta la compressione

CloudFront comprime gli oggetti nel miglior modo possibile. In rari casi, CloudFront salta la compressione di un oggetto in caso di elevato carico di CloudFront traffico. CloudFront prende questa decisione in base a una serie di fattori, inclusa la capacità dell'host. Se CloudFront salta la compressione di un oggetto, memorizza nella cache l'oggetto non compresso e continua a mostrarlo ai visualizzatori fino alla scadenza, all'eliminazione o all'invalidazione dell'oggetto.

Tipi di file che CloudFront comprime

Se configurate CloudFront per comprimere oggetti, comprime CloudFront solo gli oggetti che hanno uno dei seguenti valori nell'intestazione della risposta: 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

Conversione dell'intestazione ETag

Quando l'oggetto non compresso dall'origine include un'intestazione ETag HTTP valida e forte e CloudFront comprime l'oggetto, converte CloudFront anche il valore di ETag intestazione forte in debole e restituisce il valore debole ETag al visualizzatore. ETag Gli spettatori possono memorizzare il valore ETag debole e utilizzarlo per inviare richieste condizionali con l'intestazione If-None-Match HTTP. Ciò consente ai visualizzatori e all'origine di trattare le versioni compresse e non compresse di un oggetto come semanticamente equivalenti, il che riduce il trasferimento di dati non necessario. CloudFront

Un valore di ETag intestazione valido e sicuro inizia e termina con una doppia virgoletta (). " Per convertire il valore ETag forte in uno debole, CloudFront aggiunge i caratteri W/ all'inizio del valore forte ETag.

Quando l'oggetto di origine include un valore di ETag intestazione debole (un valore che inizia con i caratteriW/), CloudFront non modifica questo valore e lo restituisce al visualizzatore così come ricevuto dall'origine.

Quando l'oggetto di origine include un valore di ETag intestazione non valido (il valore non inizia con " o conW/), CloudFront rimuove l'ETagintestazione e restituisce l'oggetto al visualizzatore senza l'intestazione di risposta. ETag

Per ulteriori informazioni, consulta le pagine seguenti nei documenti web MDN: