Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Contenu du cache basé sur les paramètres de chaîne de requête
Certaines applications web utilisent des chaînes de requête pour envoyer des informations à l'origine. Une chaîne de requête est la partie d'une requête web qui s'affiche après un caractère ?
; la chaîne peut contenir un ou plusieurs paramètres séparés par des caractères &
. Dans l'exemple suivant, la chaîne de requête inclut deux paramètres : color=red
and size=large
:
https://d111111abcdef8.cloudfront.net/images/image.jpg?
color=red&size=large
Pour les distributions, vous pouvez choisir de transférer les chaînes de requête CloudFront vers votre origine et de mettre en cache votre contenu en fonction de tous les paramètres ou des paramètres sélectionnés. Pourquoi est-ce utile ? Prenez l'exemple de code suivant.
Supposons que votre site web soit disponible en cinq langues. La structure du répertoire et les noms de fichier des cinq versions du site web sont identiques. Lorsqu'un utilisateur consulte votre site Web, les demandes sont transmises pour CloudFront inclure un paramètre de chaîne de requête de langue basé sur la langue choisie par l'utilisateur. Vous pouvez configurer CloudFront pour transférer les chaînes de requête vers l'origine et vers le cache en fonction du paramètre de langue. Si vous configurez votre serveur Web pour renvoyer la version d'une page donnée correspondant à la langue sélectionnée, met en CloudFront cache chaque version de langue séparément, en fonction de la valeur du paramètre de chaîne de requête de langue.
Dans cet exemple, si la page principale de votre site Web estmain.html
, les cinq requêtes suivantes sont mises en CloudFront cache main.html
cinq fois, une fois pour chaque valeur du paramètre de chaîne de requête de langue :
-
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
Notez ce qui suit :
-
Certains HTTP serveurs ne traitent pas les paramètres des chaînes de requête et, par conséquent, ne renvoient pas différentes versions d'un objet en fonction des valeurs des paramètres. Pour ces origines, si vous configurez pour CloudFront transférer les paramètres de chaîne de requête vers l'origine, les mises en cache CloudFront restent basées sur les valeurs des paramètres, même si l'origine renvoie des versions identiques de l'objet CloudFront pour chaque valeur de paramètre.
-
Pour que les paramètres de chaîne de requête fonctionnent comme décrit dans l'exemple ci-dessus avec les langues, vous devez utiliser le caractère
&
comme délimiteur entre les paramètres de chaîne de requête. Si vous utilisez un autre délimiteur, vous risquez d'obtenir des résultats inattendus, en fonction des paramètres que vous spécifiez comme base de mise en cache et de l'ordre dans lequel les paramètres apparaissent dans la chaîne de requête. CloudFrontLes exemples suivants montrent ce qui se passe si vous utilisez un autre délimiteur et que vous configurez CloudFront le cache uniquement en fonction du
color
paramètre :-
Dans la demande suivante, met en CloudFront cache votre contenu en fonction de la valeur du
color
paramètre, mais CloudFront interprète la valeur commered;size=large
:https://d111111abcdef8.cloudfront.net/images/image.jpg?
color=red;size=large
-
Dans la demande suivante, met en CloudFront cache votre contenu mais ne base pas la mise en cache sur les paramètres de la chaîne de requête. Cela est dû CloudFront au fait que vous avez configuré le cache en fonction du
color
paramètre, mais CloudFront que vous interprétez la chaîne suivante comme contenant uniquement unsize
paramètre dont la valeur estlarge;color=red
:https://d111111abcdef8.cloudfront.net/images/image.jpg?
size=large;color=red
-
Vous pouvez configurer CloudFront pour effectuer l'une des opérations suivantes :
-
Ne réachemine pas du tout les chaînes de requête vers l'origine. Si vous ne transférez pas les chaînes de requête, CloudFront il n'est pas mis en cache en fonction des paramètres des chaînes de requête.
-
Réachemine les chaînes de requête vers l'origine et mette en cache en fonction de tous les paramètres de la chaîne de requête.
-
Réachemine les chaînes de requête vers l'origine et mette en cache en fonction des paramètres spécifiés de la chaîne de requête.
Pour de plus amples informations, veuillez consulter Optimisation de la mise en cache.
Rubriques
Console et API paramètres pour le transfert et la mise en cache des chaînes de requête
Pour configurer le transfert et la mise en cache des chaînes de requête dans la CloudFront console, consultez les paramètres suivants dans Référence des paramètres de distribution :
Pour configurer le transfert et la mise en cache des chaînes de requête avec le CloudFront API, consultez CachePolicyet OriginRequestPolicydans le Amazon CloudFront API Reference.
Optimisation de la mise en cache
Lorsque vous configurez CloudFront le cache en fonction des paramètres de chaîne de requête, vous pouvez suivre les étapes suivantes pour réduire le nombre de demandes CloudFront transmises à votre origine. Lorsque les emplacements CloudFront périphériques desservent des objets, vous réduisez la charge sur votre serveur d'origine et la latence, car les objets sont servis depuis des emplacements plus proches de vos utilisateurs.
- Mettre en cache uniquement sur des paramètres pour lesquels votre origine renvoie des versions différentes d'un objet
-
Pour chaque paramètre de chaîne de requête vers lequel votre application Web transmetCloudFront, CloudFront transmet les demandes à votre origine pour chaque valeur de paramètre et met en cache une version distincte de l'objet pour chaque valeur de paramètre. Ceci est le cas même si votre origine renvoie toujours le même objet quelle que soit la valeur du paramètre. Dans le cas de plusieurs paramètres, le nombre de requêtes et le nombre d'objets sont multipliés.
Nous vous recommandons de CloudFront configurer la mise en cache uniquement en fonction des paramètres de chaîne de requête pour lesquels votre origine renvoie différentes versions, et d'examiner attentivement les avantages de la mise en cache en fonction de chaque paramètre. Par exemple, supposons que vous ayez un site web de vente au détail. Vous présentez les photos d'une veste dans six couleurs différentes et cette veste est disponible dans 10 tailles. Les photos que vous affichez pour la veste montrent les différentes couleurs proposées, mais pas les différentes tailles. Pour optimiser la mise en cache, vous CloudFront devez configurer la mise en cache uniquement en fonction du paramètre de couleur, et non du paramètre de taille. Cela augmente la probabilité de CloudFront répondre à une demande depuis le cache, ce qui améliore les performances et réduit la charge sur votre origine.
- Toujours répertorier les paramètres dans le même ordre
-
L'ordre des paramètres a de l'importance dans les chaînes de requête. Dans l'exemple suivant, les chaînes de requête sont identiques, mais les paramètres sont dans un ordre différent. Cela CloudFront entraîne le transfert de deux requêtes distinctes pour image.jpg à votre origine et la mise en cache de deux versions distinctes de l'objet :
-
https://d111111abcdef8.cloudfront.net/images/image.jpg?
color=red&size=large
-
https://d111111abcdef8.cloudfront.net/images/image.jpg?
size=large&color=red
Nous vous recommandons de toujours utiliser le même ordre pour la liste des noms de paramètres, par exemple l'ordre alphabétique.
-
- Toujours utiliser la même casse pour les noms et les valeurs des paramètres
-
CloudFront prend en compte le cas des noms et des valeurs des paramètres lors de la mise en cache basée sur les paramètres des chaînes de requête. Dans l'exemple suivant, les chaînes de requête sont identiques sauf dans le cas des noms et des valeurs des paramètres. Cela CloudFront entraîne le transfert de quatre requêtes distinctes pour image.jpg à votre origine et la mise en cache de quatre versions distinctes de l'objet :
-
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
Nous vous recommandons d'utiliser systématiquement la même casse pour les noms et valeurs des paramètres, par exemple des minuscules.
-
- N'utilisez pas de noms de paramètres en conflit avec les noms signés URLs
-
Si vous utilisez Signed URLs pour restreindre l'accès à votre contenu (si vous avez ajouté des signataires fiables à votre distribution), CloudFront supprimez les paramètres de chaîne de requête suivants avant de transférer le reste URL à votre source :
-
Expires
-
Key-Pair-Id
-
Policy
-
Signature
Si vous utilisez signed URLs et que vous souhaitez configurer pour transférer les chaînes de requête CloudFront vers votre origine, vos propres paramètres de chaîne de requête ne peuvent pas être nommés
Expires
Key-Pair-Id
,Policy
, ouSignature
. -
Paramètres de chaîne de requête et journaux CloudFront standard (journaux d'accès)
Si vous activez la journalisation, CloudFront enregistre l'intégralitéURL, y compris les paramètres de chaîne de requête. Cela est vrai, que vous ayez ou non configuré pour CloudFront transmettre les chaînes de requête à l'origine. Pour plus d'informations sur la CloudFront journalisation, consultezConfiguration et utilisation de journaux standard (journaux d'accès).