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

È possibile utilizzarli CloudFront per comprimere automaticamente determinati tipi di oggetti (file) e servire gli oggetti compressi quando i visualizzatori (browser Web o altri client) li supportano. I visualizzatori indicano il loro supporto per questi oggetti compressi con l'intestazione Accept-Encoding HTTP.

CloudFront può comprimere oggetti utilizzando i formati di compressione Gzip e Brotli. Quando il visualizzatore supporta entrambi i formati ed entrambi sono presenti nel server di cache raggiunto, preferisce Brotli. CloudFront Se nel server cache è presente un solo formato di compressione, CloudFront lo restituisce.

Nota

I browser web Chrome e Firefox supportano la compressione Brotli solo quando la richiesta viene inviata utilizzando HTTPS. Questi browser non supportano Brotli con richieste HTTP.

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. Soprattutto per JavaScript i file CSS, i download più rapidi possono comportare un rendering più rapido delle pagine Web per gli utenti. Inoltre, poiché 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.

Alcune origini personalizzate possono anche comprimere gli oggetti. La tua origine potrebbe essere in grado di comprimere oggetti che CloudFront non si comprimono (vedi). Tipi di file che CloudFront comprime Se la tua origine restituisce un oggetto compresso a CloudFront, CloudFront rileva che l'oggetto è compresso in base alla presenza di un'Content-Encodingintestazione e non comprime nuovamente l'oggetto.

CloudFront Configura 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 effettuando tutte le seguenti operazioni:

  1. Assicurarsi che l'impostazione Compress Objects Automatically (Comprimi oggetti automaticamente) risulti come . (In AWS CloudFormation o nell' CloudFront API, impostato suCompress.) true

  2. Usare una policy di cache per specificare le impostazioni di memorizzazione nella cache e verificare che le impostazioni Gzip e Brotli siano entrambe abilitate. (Nella AWS CloudFormation o nell' CloudFrontAPI, imposta EnableAcceptEncodingGzip e EnableAcceptEncodingBrotli sutrue.)

  3. Verificare che i valori TTL nella policy cache siano impostati su un valore superiore a zero. Quando impostate i valori TTL su zero, la memorizzazione nella cache è disabilitata e CloudFront non comprime gli oggetti.

Per aggiornare un comportamento della cache, è possibile utilizzare uno dei seguenti strumenti:

Come funziona CloudFront la compressione

Quando CloudFront configuri per comprimere gli oggetti (vedi la sezione precedente), ecco come funziona:

  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, preferisce Brotli. CloudFront

    Nota

    I browser web Chrome e Firefox supportano la compressione Brotli solo quando la richiesta viene inviata utilizzando HTTPS. Questi browser non supportano Brotli con richieste HTTP.

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

  3. Se l'oggetto compresso è già presente nella cache, lo CloudFront invia 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 dalla presenza di un'Content-Encodingintestazione nella risposta HTTP, CloudFront invia l'oggetto compresso al visualizzatore, lo aggiunge alla cache e salta il passaggio rimanente. CloudFront non comprime nuovamente l'oggetto.

    Se l'origine restituisce un oggetto non compresso a CloudFront (non c'è un'Content-Encodingintestazione nella risposta HTTP), CloudFront determina se l'oggetto è comprimibile. Per ulteriori informazioni su come CloudFront determina se un oggetto è comprimibile, consultate la sezione seguente.

  5. Se l'oggetto è comprimibile, lo CloudFront comprime, lo invia al visualizzatore e lo aggiunge alla cache. (In rari casi, CloudFront potrebbe saltare la compressione e inviare l'oggetto non compresso al visualizzatore.)

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.

Contenuti dinamici

CloudFront non sempre comprime i contenuti dinamici. Le risposte per i contenuti dinamici a volte vengono compresse mentre altre volte no.

Il contenuto viene già memorizzato nella cache quando si configura la compressione degli CloudFront 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, il che significa che l'edge location ha già la 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 Invalida i file per rimuovere il contenuto.

L'origine è già configurata per comprimere gli oggetti

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

Tipi di file che comprimono CloudFront

Per un elenco completo dei tipi di file CloudFront compressi, vedere. 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 che non rientra nell'intervallo di dimensioni, la compressione CloudFront non comporta la CloudFront compressione dell'oggetto.

Il codice di stato HTTP per la risposta

CloudFront comprime gli oggetti solo quando il codice di stato HTTP della risposta è, o. 200 403 404

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