Contenuto della cache in base alle intestazioni delle richieste - 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à.

Contenuto della cache in base alle intestazioni delle richieste

CloudFront consente di scegliere se CloudFront inoltrare le intestazioni all'origine e memorizzare nella cache versioni separate di un oggetto specificato in base ai valori di intestazione nelle richieste dei visualizzatori. In questo modo è possibile distribuire diverse versioni dei tuoi contenuti in base al dispositivo che l'utente utilizza, alla posizione del visualizzatore, al linguaggio utilizzato dal visualizzatore e a un'ampia gamma di altri criteri.

Intestazioni e distribuzioni – Panoramica

Per impostazione predefinita, CloudFront non considera le intestazioni quando memorizza nella cache gli oggetti in posizioni periferiche. Se la tua origine restituisce due oggetti che differiscono solo per i valori nelle intestazioni della richiesta, CloudFront memorizza nella cache solo una versione dell'oggetto.

È possibile configurare CloudFront l'inoltro delle intestazioni all'origine, il che comporta CloudFront la memorizzazione nella cache di più versioni di un oggetto in base ai valori di una o più intestazioni di richiesta. CloudFront Per configurare la memorizzazione nella cache degli oggetti in base ai valori di intestazioni specifiche, specificate le impostazioni di comportamento della cache per la distribuzione. Per ulteriori informazioni, consulta Cache basata su intestazioni di richiesta selezionate.

Ad esempio, supponiamo che le richieste del visualizzatore per logo.jpg contengano un'intestazione personalizzata Product con un valore di Acme o Apex. Quando CloudFront configurate la memorizzazione nella cache degli oggetti in base al valore dell'Productintestazione, CloudFront inoltra le richieste all'origine e include i logo.jpg valori dell'intestazione e dell'Productintestazione. CloudFront memorizza nella cache logo.jpg una volta per le richieste in cui si trova il valore dell'Productintestazione Acme e una volta per le richieste in cui si trova il valore. Apex

Puoi configurare ogni comportamento cache in una distribuzione per eseguire una delle seguenti operazioni:

  • Inoltro di tutte le intestazioni al server di origine

    Nota

    Per le impostazioni della cache legacy: se si configura CloudFront l'inoltro di tutte le intestazioni all'origine, CloudFront non memorizza nella cache gli oggetti associati a questo comportamento della cache. ma invia ogni richiesta all'origine.

  • Inoltra un elenco di intestazioni che hai specificato. CloudFront memorizza nella cache gli oggetti in base ai valori di tutte le intestazioni specificate. CloudFront inoltra anche le intestazioni che inoltra per impostazione predefinita, ma memorizza nella cache gli oggetti solo in base alle intestazioni specificate.

  • Inoltra solo le intestazioni predefinite. In questa configurazione, CloudFront non memorizza nella cache gli oggetti in base ai valori nelle intestazioni della richiesta.

Per conoscere la quota corrente relativa al numero di intestazioni che puoi inoltrare per ogni comportamento cache o per richiedere una quota superiore, consulta Quote delle intestazioni.

Per informazioni sull'utilizzo della CloudFront console per aggiornare una distribuzione in modo da CloudFront inoltrare le intestazioni all'origine, consulta. Aggiornamento di una distribuzione Per informazioni sull'utilizzo dell' CloudFront API per aggiornare una distribuzione esistente, consulta Update Distribution in Amazon CloudFront API Reference.

Seleziona le intestazioni su cui basare la memorizzazione nella cache

Le intestazioni che puoi inoltrare all'origine e su cui si CloudFront basa la memorizzazione nella cache dipendono dal fatto che l'origine sia un bucket Amazon S3 o un'origine personalizzata.

  • Amazon S3: puoi configurare CloudFront l'inoltro e la memorizzazione nella cache degli oggetti in base a una serie di intestazioni specifiche (consulta il seguente elenco di eccezioni). Tuttavia, ti consigliamo di evitare intestazioni di inoltro con un server di origine Amazon S3, a meno che non sia necessario implementare la condivisione delle risorse multi-origine (CORS) o si desideri personalizzare il contenuto utilizzando Lambda@Edge negli eventi relativi ai server di origine.

    • Per configurare CORS, è necessario inoltrare le intestazioni che consentono CloudFront di distribuire contenuti per siti Web abilitati per la condivisione di risorse tra le origini (CORS). Per ulteriori informazioni, consulta Configurare CloudFront per rispettare le impostazioni CORS.

    • Per personalizzare i contenuti utilizzando le intestazioni da inoltrare all'origine Amazon S3, è necessario scrivere e aggiungere funzioni Lambda @Edge e associarle alla distribuzione in modo che vengano attivate da un CloudFront evento rivolto all'origine. Per ulteriori informazioni sull'utilizzo delle intestazioni per personalizzare contenuti, consulta Esempi di personalizzazione del contenuto in base alle intestazioni del paese o del tipo di dispositivo.

      Consigliamo di evitare di inoltrare le intestazioni non utilizzate per personalizzare i contenuti perché inoltrare intestazioni aggiuntive può ridurre il rapporto di occorrenza nella cache. In altre parole, non è CloudFront possibile gestire tante richieste provenienti dalle cache edge quanto una percentuale di tutte le richieste.

  • Origine personalizzata: puoi configurare la memorizzazione nella cache in base CloudFront al valore di qualsiasi intestazione di richiesta tranne quanto segue:

    • Connection

    • Cookie – Se desideri inoltrare e memorizzare nella cache in base ai cookie, devi utilizzare un'impostazione separate nella tua distribuzione. Per ulteriori informazioni, consulta Contenuto della cache basato sui cookie.

    • Host (for Amazon S3 origins)

    • Proxy-Authorization

    • TE

    • Upgrade

    Puoi CloudFront configurare la memorizzazione nella cache degli oggetti in base ai valori nelle User-Agent intestazioni Date and, ma non è consigliabile. Queste intestazioni hanno numerosi valori possibili e la memorizzazione nella cache in base ai loro valori potrebbe causare CloudFront l'inoltro di un numero significativamente maggiore di richieste all'origine.

Per un elenco completo delle intestazioni delle richieste HTTP e di come le CloudFront elabora, consulta. Intestazioni e CloudFront comportamento delle richieste HTTP (origini personalizzate e Amazon S3)

Configurare CloudFront per rispettare le impostazioni CORS

Se hai abilitato la condivisione di risorse multi-origine (CORS) su un bucket Amazon S3 o un server di origine personalizzato, devi selezionare intestazioni specifiche da inoltrare, in modo che vengano rispettate le impostazioni CORS. Le intestazioni che devi inoltrare variano a seconda del server di origine (Amazon S3 o personalizzato) e della volontà di memorizzare nella cache le risposte OPTIONS.

Amazon S3

  • Se desideri che le risposte OPTIONS vengano memorizzate nella cache, esegui le operazioni descritte di seguito:

    • Scegli le opzioni per le impostazioni predefinite di comportamento della cache che abilitano la memorizzazione nella cache per le risposte OPTIONS.

    • Configura CloudFront per inoltrare le seguenti intestazioni: OriginAccess-Control-Request-Headers, e. Access-Control-Request-Method

  • Se non desideri che OPTIONS le risposte vengano memorizzate nella cache, configura l'inoltro dell'Originintestazione, insieme CloudFront a qualsiasi altra intestazione richiesta dall'origine (ad esempio, Access-Control-Request-HeadersAccess-Control-Request-Method, o altre).

Server di origine personalizzati – Inoltra l'intestazione Origin insieme a qualsiasi altra intestazione richiesta dal server di origine.

CloudFront Per configurare la memorizzazione nella cache delle risposte basate su CORS, è necessario configurare CloudFront l'inoltro delle intestazioni utilizzando una politica di cache. Per ulteriori informazioni, consulta Controlla la chiave della cache con una policy.

Per ulteriori informazioni su CORS e Amazon S3, consulta Utilizzo delle funzionalità Cross-Origin Resource Sharing (CORS) nella Guida per l'utente di Amazon Simple Storage Service.

Configura la memorizzazione nella cache in base al tipo di dispositivo

Se desideri CloudFront memorizzare nella cache diverse versioni dei tuoi oggetti in base al dispositivo utilizzato dall'utente per visualizzare i contenuti, configura CloudFront l'inoltro delle intestazioni applicabili all'origine personalizzata:

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

In base al valore dell'User-Agentintestazione, CloudFront imposta il valore di queste intestazioni su true o false prima dell'inoltro della richiesta all'origine. Se il dispositivo ricade in più di una categoria, allora più di un valore potrebbe essere true. Ad esempio, per alcuni tablet, CloudFront potrebbe impostare entrambi e su. CloudFront-Is-Mobile-Viewer CloudFront-Is-Tablet-Viewer true

Configura la memorizzazione nella cache in base alla lingua del visualizzatore

Se desideri CloudFront memorizzare nella cache diverse versioni dei tuoi oggetti in base alla lingua specificata nella richiesta, configura CloudFront l'inoltro dell'Accept-Languageintestazione all'origine.

Configura la memorizzazione nella cache in base alla posizione del visualizzatore

Se desideri CloudFront memorizzare nella cache diverse versioni dei tuoi oggetti in base al paese da cui proviene la richiesta, configura CloudFront l'inoltro dell'CloudFront-Viewer-Countryintestazione all'origine. CloudFront converte automaticamente l'indirizzo IP da cui proviene la richiesta in un codice del paese di due lettere. Per un easy-to-use elenco dei codici dei paesi, ordinabili per codice e per nome del paese, consulta la voce di Wikipedia ISO 3166-1 alpha-2.

Configura la memorizzazione nella cache in base al protocollo della richiesta

Se desideri CloudFront memorizzare nella cache diverse versioni dei tuoi oggetti in base al protocollo della richiesta, HTTP o HTTPS, configura CloudFront l'inoltro dell'CloudFront-Forwarded-Protointestazione all'origine.

Configura la memorizzazione nella cache per i file compressi

Se la tua origine supporta la compressione Brotli, puoi memorizzare nella cache in base all’intestazione Accept-Encoding. Configurare il caching solo in base a Accept-Encoding se l'origine distribuisce diversi contenuti in base all'intestazione.

In che modo il caching basato sulle intestazioni influenza le performance

Quando configuri la cache in base CloudFront a una o più intestazioni e le intestazioni hanno più di un valore possibile, CloudFront inoltra più richieste al server di origine per lo stesso oggetto. Questo rallenta le prestazioni e aumenta il carico di lavoro del server di origine. Se il tuo server di origine restituisce lo stesso oggetto indipendentemente dal valore di una determinata intestazione, ti consigliamo di non configurare la cache in base CloudFront a quell'intestazione.

Se configuri CloudFront per inoltrare più di un'intestazione, l'ordine delle intestazioni nelle richieste dei visualizzatori non influisce sulla memorizzazione nella cache, purché i valori siano gli stessi. Ad esempio, se una richiesta contiene le intestazioni A:1, B:2 e un'altra richiesta contiene B:2, A:1, memorizza nella cache solo una copia dell'oggetto. CloudFront

In che modo il formato delle intestazioni e dei valori delle intestazioni si ripercuotono sul caching

Quando viene CloudFront memorizzata nella cache in base ai valori dell'intestazione, non considera le maiuscole e le minuscole del nome dell'intestazione, ma considera le maiuscole e minuscole del valore dell'intestazione:

  • Se le richieste del visualizzatore includono entrambi Product:Acme eproduct:Acme, CloudFront memorizza un oggetto nella cache solo una volta. L'unica differenza tra loro è il caso del nome dell'intestazione, che non interessa la memorizzazione nella cache.

  • Se le richieste del visualizzatore includono entrambi Product:Acme eProduct:acme, CloudFront memorizza un oggetto nella cache due volte, perché il valore è presente Acme in alcune richieste e acme in altre.

Intestazioni che vengono CloudFront restituite al visualizzatore

La configurazione CloudFront per l'inoltro e la memorizzazione delle intestazioni nella cache non influisce sulle intestazioni CloudFront restituite al visualizzatore. CloudFront restituisce tutte le intestazioni che ottiene dall'origine con alcune eccezioni. Per ulteriori informazioni, consulta l'argomento applicabile: