

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

# Come CloudFront elabora le richieste parziali per un oggetto (intervallo GETs)
<a name="RangeGETs"></a>

Per un oggetto di grandi dimensioni, il visualizzatore (il browser web o un altro client) può eseguire più richieste `GET` e utilizzare l'intestazione della richiesta `Range` per scaricare l'oggetto in parti più piccole. Queste richieste per intervalli di byte, talvolta note come richieste `Range GET`, migliorano l'efficienza di download parziali e il ripristino da parte di trasferimenti in parte non riusciti. 

Quando CloudFront riceve una `Range GET` richiesta, controlla la cache nell'edge location che ha ricevuto la richiesta. Se la cache in quella edge location contiene già l'intero oggetto o la parte dell'oggetto richiesta, serve CloudFront immediatamente l'intervallo richiesto dalla cache.

Se la cache non contiene l'intervallo richiesto, CloudFront inoltra la richiesta all'origine. (Per ottimizzare le prestazioni, CloudFront può richiedere un intervallo più ampio di quello richiesto dal client in`Range GET`.) Cosa succede dopo varia a seconda che il server di origine supporti o meno le richieste `Range GET`:
+ **Se l'origine supporta `Range GET` le richieste**, restituisce l'intervallo richiesto. CloudFront serve l'intervallo richiesto e lo memorizza anche nella cache per richieste future. (Amazon S3) supporta le richieste `Range GET`, così come molti server HTTP.)
+ **Se l'origine non supporta `Range GET` le richieste**, restituisce l'intero oggetto. CloudFront serve la richiesta corrente inviando l'intero oggetto e memorizzandolo anche nella cache per richieste future. Dopo aver CloudFront memorizzato l'intero oggetto in una cache edge, risponde alle nuove `Range GET` richieste servendo l'intervallo richiesto.

In entrambi i casi, CloudFront inizia a servire l'intervallo o l'oggetto richiesto all'utente finale non appena il primo byte arriva dall'origine.

**Nota**  
Se il visualizzatore effettua una `Range GET` richiesta e l'origine CloudFront ritorna`Transfer-Encoding: chunked`, restituisce l'intero oggetto al visualizzatore anziché l'intervallo richiesto.

CloudFront segue generalmente le specifiche RFC per l'`Range`intestazione. Tuttavia, se le intestazioni `Range` non rispettano i seguenti requisiti, CloudFront restituirà il codice di stato `200` con l'oggetto completo invece del codice di stato `206` con gli intervalli specificati:
+ Gli intervalli devono essere elencati in ordine crescente. Ad esempio, `100-200,300-400` è valido, `300-400,100-200` non è valido.
+ Gli intervalli non devono sovrapporsi. Ad esempio, `100-200,150-250` non è valido.
+ Tutti le specifiche degli intervalli devono essere valide. Ad esempio, non puoi specificare un valore negativo come parte di un intervallo.

Per ulteriori informazioni su intestazione della richiesta `Range`, consulta [Richieste di intervallo](https://httpwg.org/specs/rfc7233.html#range.requests) in RFC 7233 oppure [Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) nei documenti Web MDN.

## Utilizzare richieste di intervallo per memorizzare nella cache oggetti di grandi dimensioni
<a name="cache-large-objects-with-range-requests"></a>

Quando la memorizzazione nella cache è abilitata, CloudFront non recupera o memorizza nella cache un oggetto di dimensioni superiori a 50 GB. Quando un'origine indica che l'oggetto è più grande di questa dimensione (nell'intestazione della `Content-Length` risposta), CloudFront chiude la connessione all'origine e restituisce un errore al visualizzatore. (Con la memorizzazione nella cache disattivata, CloudFront può recuperare un oggetto più grande di questa dimensione dall'origine e passarlo al visualizzatore. Tuttavia, CloudFront non memorizza l'oggetto nella cache.)

Tuttavia, con le richieste di intervallo, è possibile utilizzare CloudFront per memorizzare nella cache un oggetto che è più grande della dimensione [massima del file memorizzabile nella cache](cloudfront-limits.md#limits-web-distributions). 

**Example Esempio**  

1.  Considera un’origine con un oggetto da 100 GB. Con la memorizzazione nella cache abilitata, CloudFront non recupera o memorizza nella cache un oggetto così grande. Tuttavia, il visualizzatore può inviare più richieste di intervallo per recuperare l'oggetto in parti, con ciascuna parte inferiore a 50 GB.

1. Il visualizzatore può richiedere l’oggetto in parti da 20 GB inviando una richiesta con l’intestazione `Range: bytes=0-21474836480` per recuperare la prima parte, un’altra richiesta con l’intestazione `Range: bytes=21474836481-42949672960` per recuperare la parte successiva e così via. 

1. Quando il visualizzatore ha ricevuto tutte le parti, può combinarle per costruire l'oggetto originale da 100 GB. 

1. In questo caso, CloudFront memorizza nella cache ciascuna delle parti da 20 GB dell'oggetto e può rispondere alle richieste successive per la stessa parte dalla cache.

Per una richiesta di intervallo relativa a un oggetto compresso, la richiesta di intervallo di byte si basa sulla dimensione compressa e non sulla dimensione originale dell’oggetto. Per ulteriori informazioni su questi file di compressione, consulta [Distribuzione di file compressi](ServingCompressedFiles.md).