Distribuzione di 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à.

Distribuzione di 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. La distribuzione di oggetti compressi può essere meno costosa rispetto alla distribuzione di oggetti non compressi.

Configura CloudFront per comprimere 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 distribuzione, quindi seleziona il comportamento da modificare.

  3. Per l’impostazione Comprimi oggetti automaticamente, scegli .

  4. Usa una policy della cache per specificare le impostazioni di caching e abilita entrambi i formati di compressione Gzip e Brotli.

Note
  • Per utilizzare la compressione Brotli sono richieste policy della cache. Brotli non supporta le impostazioni cache legacy.

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

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 utilizzando HTTPS. Non supportano Brotli con 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 Condizioni per la compressione.

  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 un oggetto specifico memorizzato nella cache che utilizza la compressione Gzip e 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 CloudFront non vengono compressi. Per ulteriori informazioni, consulta Tipi CloudFront di file che si comprimono.

Condizioni per la compressione

L'elenco seguente fornisce ulteriori informazioni sugli scenari in cui CloudFront non 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 la posizione edge dispone già della versione più recente dell’oggetto. Se desiderate CloudFront comprimere oggetti che sono già memorizzati nella cache in posizioni periferiche, dovete invalidare tali oggetti. Per ulteriori informazioni, consulta Invalidare 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 CloudFront di file che si comprimono.

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 (intervallo GETs)

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 CloudFront di file che si comprimono

Se configurate CloudFront per comprimere oggetti, comprime CloudFront solo gli oggetti che hanno uno dei seguenti valori nell'intestazione della Content-Type risposta:

  • 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 intestazione ETag valido e consolidato inizia e termina con un carattere di virgoletta doppia ("). 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: