Memorizzazione nella cache di contenuti basati su parametri delle stringhe 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à.

Memorizzazione nella cache di contenuti basati su parametri delle stringhe 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 che segue, la stringa di query include due parametri, colore = rosso e dimensioni = grandi:

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 memorizzare nella cache i contenuti in base a tutti i parametri o a 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 configuri il server Web per restituire la versione di una determinata pagina che corrisponda alla lingua selezionata, CloudFront memorizza nella cache ciascuna versione di lingua separatamente, in base al valore del parametro della stringa di query relativo alla lingua.

In questo esempio, se la pagina principale del sito Web èmain.html, le seguenti cinque richieste fanno sì che la cache CloudFront venga memorizzata main.html cinque volte, una volta per ogni valore del parametro della stringa di query della lingua:

  • 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 server HTTP non elaborano parametri delle stringhe di query e, di conseguenza, non restituiscono diverse versioni 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 rosso; 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 seguente stringa come contenente solo un size parametro il cui valore è large; color=red:

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

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

  • Non inoltrare le stringhe di query al server di origine. Se non inoltri le stringhe di query, CloudFront non memorizza nella cache in base ai parametri della stringa 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 Ottimizzazione del caching.

Impostazioni della console e delle API per l'inoltro delle stringa di query e per la memorizzazione nella cache

Per configurare l'inoltro e la memorizzazione nella cache delle stringhe di query nella CloudFront console, consulta le seguenti impostazioni in: Valori da specificare durante la creazione o l'aggiornamento di una distribuzione

Per configurare l'inoltro e la memorizzazione nella cache delle stringhe di query con l' CloudFront API, consulta le seguenti impostazioni in DistributionConfige in Amazon CloudFront API DistributionConfigWithTagsReference:

  • QueryString

  • QueryStringCacheKeys

Ottimizzazione del caching

Quando configuri la memorizzazione nella cache in base CloudFront ai parametri della stringa di query, puoi eseguire le seguenti operazioni per ridurre il numero di richieste che vengono inoltrate CloudFront 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 inoltra CloudFront, 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. Ad esempio, se le richieste per un oggetto includono due parametri che hanno ciascuno tre valori diversi, CloudFront memorizza nella cache sei versioni di tale oggetto, assumendo che siano stati seguiti gli altri suggerimenti in questa sezione.

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 in conflitto con URL firmati

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

  • Expires

  • Key-Pair-Id

  • Policy

  • Signature

Se utilizzi URL firmati e desideri configurare l'inoltro delle stringhe di query CloudFront all'origine, non puoi denominare i parametri della stringa di query personalizzati,, o. Expires Key-Pair-Id Policy Signature

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

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