Contenuto della cache in base ai parametri della stringa di query - 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 ai parametri della stringa di query

Alcune applicazioni Web utilizzano stringhe di query per inviare informazioni al server di origine. Una stringa di query è la parte di una richiesta Web che viene visualizzata dopo un carattere ?; la stringa può contenere uno o più parametri, separati da caratteri &. Nell'esempio seguente, la stringa di query include due parametri, color=red e size=large:

https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

Per le distribuzioni, è possibile scegliere se CloudFront inoltrare le stringhe di query all'origine e se inserire nella cache il contenuto in base a tutti i parametri o ai parametri selezionati. Perché questo potrebbe essere utile? Analizza l'esempio seguente.

Supponiamo che il tuo sito Web sia disponibile in cinque lingue. La struttura delle directory e i nomi dei file per le cinque versioni del sito Web sono identiche. Quando un utente visualizza il sito Web, le richieste inoltrate CloudFront includono un parametro della stringa di query linguistica basato sulla lingua scelta dall'utente. È possibile CloudFront configurare l'inoltro delle stringhe di query all'origine e la memorizzazione nella cache in base al parametro della lingua. Se configurate il server Web per restituire la versione di una determinata pagina che corrisponde alla lingua selezionata, CloudFront memorizza nella cache ogni versione linguistica separatamente, in base al valore del parametro della stringa di query della lingua.

In questo esempio, se la pagina principale del sito Web èmain.html, le seguenti cinque richieste vengono memorizzate nella cache main.html cinque volte, una volta per ogni valore del parametro della stringa di query della lingua: CloudFront

  • https://d111111abcdef8.cloudfront.net/main.html?language=de

  • https://d111111abcdef8.cloudfront.net/main.html?language=en

  • https://d111111abcdef8.cloudfront.net/main.html?language=es

  • https://d111111abcdef8.cloudfront.net/main.html?language=fr

  • https://d111111abcdef8.cloudfront.net/main.html?language=jp

Tieni presente quanto segue:

  • Alcuni HTTP server non elaborano i parametri della stringa di query e, pertanto, non restituiscono versioni diverse di un oggetto in base ai valori dei parametri. Per queste origini, se configurate per CloudFront inoltrare i parametri della stringa di query all'origine, vengono CloudFront comunque memorizzate nella cache in base ai valori dei parametri anche se l'origine restituisce versioni identiche dell'oggetto CloudFront per ogni valore del parametro.

  • Affinché i parametri di stringa di query funzionino come descritto nell'esempio precedente con le lingue, devi utilizzare il carattere & come delimitatore tra i parametri delle stringhe di query. Se si utilizza un delimitatore diverso, è possibile ottenere risultati imprevisti, a seconda dei parametri specificati CloudFront da utilizzare come base per la memorizzazione nella cache e dell'ordine in cui i parametri vengono visualizzati nella stringa di query.

    Gli esempi seguenti mostrano cosa succede se si utilizza un delimitatore diverso e si configura la memorizzazione nella cache solo in base CloudFront al parametro: color

    • Nella richiesta seguente, CloudFront memorizza nella cache i contenuti in base al valore del color parametro, ma CloudFront interpreta il valore come red;size=large:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red;size=large

    • Nella richiesta seguente, CloudFront memorizza nella cache il contenuto ma non basa la memorizzazione nella cache sui parametri della stringa di query. Questo perché hai configurato la cache in base CloudFront al color parametro, ma CloudFront interpreta la stringa seguente come contenente solo un size parametro con un valore di large;color=red:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large;color=red

È possibile configurare CloudFront in modo da eseguire una delle seguenti operazioni:

  • Non inoltrare le stringhe di query al server di origine. Se non inoltrate stringhe di query, CloudFront non viene memorizzata nella cache in base ai parametri delle stringhe di query.

  • Inoltra le stringhe di query al server di origine e memorizza nella cache in base a tutti i parametri della stringa di query.

  • Inoltra le stringhe di query al server di origine e memorizza nella cache in base a parametri specifici della stringa di query.

Per ulteriori informazioni, consulta Ottimizza la memorizzazione nella cache.

Console e API impostazioni per l'inoltro e la memorizzazione nella cache delle stringhe di query

Per configurare l'inoltro e la memorizzazione nella cache delle stringhe di query nella CloudFront console, consulta le seguenti impostazioni in: Riferimento alle impostazioni di distribuzione

Per configurare l'inoltro e la memorizzazione nella cache delle stringhe di query con CloudFront API, consulta CachePolicye in Amazon OriginRequestPolicyReference. CloudFront API

Ottimizza la memorizzazione nella cache

Quando si configura la memorizzazione nella cache in base CloudFront ai parametri della stringa di query, è possibile eseguire le seguenti operazioni per ridurre il numero di richieste CloudFront inoltrate all'origine. Quando le CloudFront edge location servono oggetti, riduci il carico sul server di origine e riduci la latenza perché gli oggetti vengono serviti da posizioni più vicine agli utenti.

Cache basata solo su parametri per i quali la tua origine restituisce versioni diverse di un oggetto

Per ogni parametro della stringa di query a cui l'applicazione Web inoltraCloudFront, CloudFront inoltra le richieste all'origine per ogni valore di parametro e memorizza nella cache una versione separata dell'oggetto per ogni valore del parametro. Ciò è valido anche se il server di origine restituisce sempre lo stesso oggetto indipendentemente dal valore di parametro. Per più parametri, il numero di richieste e di oggetti si moltiplicano.

Ti consigliamo di configurare la cache solo in base CloudFront ai parametri della stringa di query per i quali l'origine restituisce versioni diverse e di considerare attentamente i vantaggi della memorizzazione nella cache in base a ciascun parametro. Supponiamo ad esempio che tu abbia un sito Web di vendita al dettaglio. Disponi delle immagini di una giacca in sei colori diversi e la giacca è disponibile in dieci taglie diverse. Le immagini che hai della giacca mostrano i diversi colori, ma non le differenti taglie. Per ottimizzare la memorizzazione nella cache, è CloudFront necessario configurarla solo in base al parametro color e non al parametro size. Ciò aumenta la probabilità che sia CloudFront possibile evadere una richiesta dalla cache, migliorando le prestazioni e riducendo il carico sull'origine.

Elenca sempre i parametri nello stesso ordine

L'ordine dei parametri è importante in materia di stringhe di query. In questo esempio, le stringhe di query sono identiche, anche che i parametri sono in ordine diverso. Ciò comporta CloudFront l'inoltro di due richieste separate per image.jpg all'origine e la memorizzazione nella cache di due versioni separate dell'oggetto:

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large&color=red

Ti consigliamo sempre di elencare i nomi dei parametri nello stesso ordine, seguendo, ad esempio, l'ordine alfabetico.

Usa sempre lo stesso formato per nomi e valori di parametri

CloudFront considera il caso dei nomi e dei valori dei parametri durante la memorizzazione nella cache in base ai parametri della stringa di query. In questo esempio, le stringhe di query sono identiche, eccetto per il formato dei nomi e dei valori dei parametri. Ciò comporta CloudFront l'inoltro di quattro richieste separate per image.jpg all'origine e la memorizzazione nella cache di quattro versioni separate dell'oggetto:

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=Red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?Color=red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?Color=Red

Ti consigliamo di usare lo stesso formato, maiuscolo o minuscolo, per i nomi e i valori dei parametri, ad esempio tutte in minuscolo.

Non utilizzare nomi di parametri che siano in conflitto con signed URLs

Se utilizzi signed URLs per limitare l'accesso ai tuoi contenuti (se hai aggiunto firmatari fidati alla tua distribuzione), CloudFront rimuove i seguenti parametri della stringa di query prima di inoltrare il resto URL all'origine:

  • Expires

  • Key-Pair-Id

  • Policy

  • Signature

Se utilizzi signed URLs e desideri configurare l'inoltro delle stringhe di query CloudFront all'origine, i parametri della tua stringa di query non possono essere denominatiExpires,, Key-Pair-Id o. Policy Signature

Parametri delle stringhe di query e log CloudFront standard (log di accesso)

Se si abilita la registrazione, CloudFront registra tutti i datiURL, inclusi i parametri della stringa di query. Ciò è vero indipendentemente dal fatto che l'utente sia stato configurato CloudFront per inoltrare le stringhe di query all'origine. Per ulteriori informazioni sulla CloudFront registrazione, vedere. Configurazione e utilizzo di log standard (log di accesso)