Contenu du cache basé sur les paramètres de chaîne de requête - Amazon CloudFront

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 comprend deux paramètres, color=red et 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 serveurs HTTP ne traitent pas les paramètres des chaînes de requête et ne renvoient donc pas de versions différentes d'un objet basé sur les 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. CloudFront

    Les 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 requête suivante, met en CloudFront cache votre contenu en fonction de la valeur du color paramètre, mais CloudFront interprète la valeur comme rouge ; 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 que CloudFront vous interprétez la chaîne suivante comme contenant uniquement un size paramètre dont la valeur est grande ; 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 plus d’informations, consultez Optimisation de la mise en cache.

Paramètres de console et d'API pour le réacheminement 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 l' CloudFront API, consultez les paramètres suivants dans DistributionConfiget DistributionConfigWithTagsdans le Amazon CloudFront API Reference :

  • QueryString

  • QueryStringCacheKeys

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 transmet CloudFront, 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 qui soient en conflit avec les URL signées

Si vous utilisez des URL signées pour restreindre l'accès à votre contenu (si vous avez ajouté des signataires de confiance à votre distribution), CloudFront supprimez les paramètres de chaîne de requête suivants avant de transférer le reste de l'URL vers votre source :

  • Expires

  • Key-Pair-Id

  • Policy

  • Signature

Si vous utilisez des URL signées et que vous souhaitez les configurer pour transférer les chaînes de requête CloudFront vers votre origine, les paramètres de vos propres chaînes de requête ne peuvent pas être nommés ExpiresKey-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'URL complète, y compris les paramètres de la 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 des journaux standard (journaux d’accès).