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. Download più veloci possono comportare un rendering più rapido delle pagine web per i visitatori, in particolare per i file JavaScript e CSS. Inoltre, il costo del trasferimento dati CloudFront si basa sulla quantità totale di dati forniti. La distribuzione di oggetti compressi può essere meno costosa rispetto alla distribuzione di oggetti non compressi.
Argomenti
Configurazione di CloudFront per comprimere oggetti
Per configurare CloudFront in modo da comprimere gli oggetti, aggiorna il comportamento cache che desideri utilizzare per servire gli oggetti compressi.
Come configurare CloudFront per comprimere oggetti (console)
-
Accedi alla Console CloudFront
. -
Scegli la distribuzione, quindi seleziona il comportamento da modificare.
-
Per l’impostazione Comprimi oggetti automaticamente, scegli Sì.
-
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 CloudFormation o l’API CloudFront, imposta i parametri
Compress,EnableAcceptEncodingGzip,EnableAcceptEncodingBrotlisutrue.
Per comprendere come CloudFront comprime gli oggetti, consulta la sezione seguente.
Come funziona la compressione CloudFront
-
Un visualizzatore richiede un oggetto. Il visualizzatore include l'intestazione
Accept-EncodingHTTP nella richiesta e il valore di intestazione includegzip,bro entrambi. Questo indica che il visualizzatore supporta gli oggetti compressi. Quando il visualizzatore supporta entrambi i formati Gzip e Brotli, CloudFront utilizza 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.
-
Nella posizione edge, CloudFront controlla la cache per una copia compressa dell'oggetto richiesto.
-
A seconda che l’oggetto compresso sia presente o meno nella cache, CloudFront esegue una delle seguenti operazioni:
-
Se l’oggetto compresso è già nella cache, CloudFront lo invia al visualizzatore e ignora le fasi rimanenti.
-
Se l’oggetto compresso non si trova 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ò verificarsi quando CloudFront ha precedentemente saltato la compressione. In questo caso, CloudFront memorizza nella cache l'oggetto non compresso e continua a servirlo fino a quando l'oggetto scade, viene espulso o viene invalidato.
-
-
Se l’origine restituisce un oggetto compresso, come indicato dalla presenza di un’intestazione
Content-Encodingnella risposta HTTP, CloudFront invia l’oggetto compresso al visualizzatore, lo aggiunge alla cache e ignora le fasi rimanenti. CloudFront non comprime di nuovo l'oggetto. -
Se l’origine restituisce a CloudFront un oggetto non compresso senza intestazione
Content-Encodingnella risposta HTTP, CloudFront determina se l’oggetto può essere compresso. Per ulteriori informazioni, consulta Condizioni per la compressione. -
Se l’oggetto può essere compresso, CloudFront lo comprime, lo invia al visualizzatore e quindi lo aggiunge alla cache.
-
Se ci sono richieste visualizzatore successive 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. L’origine potrebbe essere in grado di comprimere oggetti non compressi da CloudFront. Per ulteriori informazioni, consulta Tipi di file che CloudFront comprime.
Condizioni per la compressione
Nell’elenco seguente vengono fornite ulteriori informazioni sugli scenari in cui CloudFront comprime gli oggetti.
- La richiesta utilizza HTTP 1.0
-
Se una richiesta a CloudFront utilizza HTTP 1.0, CloudFront rimuove l’intestazione
Accept-Encodinge non comprime l’oggetto nella risposta. Accept-EncodingIntestazione della richiesta-
Se l’intestazione
Accept-Encodingnon è presente nella richiesta del visualizzatore o se non contienegzipobrcome valore, CloudFront non comprime l’oggetto nella risposta. Se l'intestazioneAccept-Encodinginclude ulteriori valori, ad esempiodeflate, CloudFront li rimuove prima di inoltrare la richiesta al server di origine.Quando CloudFront è configurato per comprimere oggetti, include automaticamente l'intestazione
Accept-Encodingnella chiave cache e nelle richieste di origine. - Il contenuto è già memorizzato nella cache quando si configura CloudFront per comprimere oggetti
-
CloudFront comprime gli oggetti quando li ottiene dall'origine. Quando configuri CloudFront per comprimere gli oggetti, gli oggetti già memorizzati nella cache della posizione edge non vengono compressi da CloudFront. Inoltre, quando un oggetto memorizzato nella cache scade in una posizione edge e CloudFront 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 vuoi che CloudFront comprima gli oggetti già memorizzati nella cache delle posizioni edge, devi invalidare quegli oggetti. Per ulteriori informazioni, consulta Invalidare i file per rimuovere il contenuto.
- L'origine è già configurata per comprimere gli oggetti
-
Se si configura CloudFront per comprimere gli oggetti e l’origine comprime anche gli oggetti, l’origine dovrebbe includere una intestazione
Content-Encoding. Questa intestazione indica a CloudFront che l’oggetto è già compresso. Quando una risposta da un’origine include l’intestazioneContent-Encoding, CloudFront non comprime l’oggetto, a prescindere dal valore dell’intestazione. CloudFront invia la risposta al visualizzatore e memorizza l'oggetto nella cache della posizione edge. - Tipi di file che CloudFront comprime
-
Per un elenco completo, consulta Tipi di file che CloudFront comprime.
- Dimensione degli oggetti che CloudFront comprime
-
CloudFront comprime oggetti la cui dimensione è tra 1.000 byte e 10 milioni di byte.
Content-LengthIntestazione-
L'origine deve includere un'intestazione
Content-Lengthnella risposta di modo che CloudFront sia in grado di determinare se la dimensione dell'oggetto rientra nell'intervallo che CloudFront può comprimere. Se l’intestazioneContent-Lengthè mancante oppure contiene un valore non valido o al di fuori dell’intervallo di dimensioni che CloudFront può comprimere, CloudFront non comprime l’oggetto. Per ulteriori informazioni su come CloudFront elabora oggetti di grandi dimensioni che possono superare l’intervallo di dimensioni, consulta Come CloudFront elabora le richieste parziali per un oggetto (range GET). - Il codice di stato HTTP per la risposta
-
CloudFront comprime gli oggetti solo quando il codice di stato HTTP della risposta è
200,403o404. - La risposta non ha corpo
-
Quando la risposta HTTP dall'origine non ha corpo, non c'è nulla da comprimere per CloudFront.
ETagIntestazione-
CloudFront a volte modifica l'intestazione
ETagnella risposta HTTP quando comprime gli oggetti. Per ulteriori informazioni, consulta ETagConversione dell'intestazione . - CloudFront salta la compressione
-
CloudFront comprime gli oggetti in base al miglior tentativo. In rari casi, CloudFront non esegue la compressione di un oggetto quando registra un carico di traffico elevato. CloudFront prende questa decisione sulla base di una varietà di fattori, tra cui la capacità host. Se CloudFront salta la compressione di un oggetto, memorizza l'oggetto non compresso nella cache e continua a servirlo fino a quando l'oggetto scade, viene espulso o viene invalidato.
Tipi di file che CloudFront comprime
Se configuri CloudFront per comprimere gli oggetti, CloudFront comprime solo gli oggetti che hanno i 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
ETagConversione dell'intestazione
Quando l'oggetto non compresso dall'origine include un'intestazione ETag HTTP valida e consolidata, e CloudFront comprime l'oggetto, CloudFront converte anche il valore dell’intestazione ETag consolidata in un ETag debole e restituisce il valore ETag debole al visualizzatore. 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, CloudFront, e all'origine di trattare le versioni compresse e non compresse di un oggetto come semanticamente equivalenti, riducendo così il trasferimento di dati non necessari.
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 dall'origine include un valore di intestazione debole ETag (un valore che inizia con i caratteri W/), CloudFront non modifica questo valore e lo restituisce al visualizzatore come ricevuto dall'origine.
Quando l'oggetto dall'origine include un valore di intestazione ETag non valido (il valore non inizia con " o con W/), CloudFront rimuove l'intestazione ETag e restituisce l'oggetto al visualizzatore senza l'intestazione di risposta ETag.
Per ulteriori informazioni, consulta le pagine seguenti nei documenti web MDN:
-
Direttive
(intestazione ETagHTTP) -
Convalida debole
(richieste condizionali HTTP)