J'ai configuré ma distribution Amazon CloudFront et l'origine pour mettre en cache des objets, mais ma distribution renvoie une réponse « Cache X : absent de CloudFront ». Pourquoi cela se produit-il ? Que faire pour éviter ce type de réponse ?
Résolution
Pour diagnostiquer et résoudre le problème à l’origine de la réponse « Cache X : absent de CloudFront », vérifiez les points suivants :
Quel emplacement périphérique reçoit les demandes ?
Une fois qu'un objet est demandé via CloudFront, il est uniquement mis en cache dans l'emplacement périphérique qui a reçu la demande. Si une demande ultérieure est envoyée à un autre emplacement périphérique, l'autre emplacement périphérique n'aura pas de version mise en cache de l'objet. Ce scénario renvoie une réponse « X-Cache : absent de CloudFront ».
Pour déterminer si la réponse provient d'un ou de plusieurs emplacements périphériques, envoyez plusieurs requêtes à partir du même client pour le même objet. Ensuite, vérifiez les adresses IP avec lesquelles la connexion est établie. Exécutez une résolution DNS inverse sur les adresses IP pour déterminer l’emplacement périphérique vers lequel les requêtes sont dirigées.
Vous pouvez également déterminer l'emplacement périphérique en vérifiant la valeur de l'en-tête de réponse « x-amz-cf-pop » après avoir envoyé une requête à votre distribution CloudFront.
À quelle fréquence l'objet est-il demandé ?
Si un objet dans un emplacement périphérique n'est pas souvent demandé, CloudFront peut le supprimer avant sa date d'expiration. Pour en savoir plus sur le moment où CloudFront expulse des objets, consultez Gestion de la durée de séjour du contenu dans un cache périphérique (Expiration).
Si vous voyez la réponse « Cache X : absent de CloudFront » par intermittence, il se peut que CloudFront soit en train de supprimer l'objet à cause de requêtes peu fréquentes.
La distribution CloudFront est-elle configurée pour transférer des en-têtes, des cookies ou des paramètres de chaîne de requêtes ?
Si votre distribution est configurée pour transférer des en-têtes, des cookies ou des paramètres de chaîne de requête, la distribution met en cache les demandes en fonction de ces paramètres. Les paramètres réduisent le nombre de requêtes fournies à partir du cache.
Par exemple, si deux demandes d'accès à un objet ont des valeurs différentes dans les paramètres de chaîne de requêtes, la deuxième demande ne sera pas fournie par la mémoire cache. La deuxième demande renvoie la réponse « Cache X : absent de CloudFront ».
Pour déterminer si les en-têtes, cookies ou paramètres de chaîne de requête transmis sont à l'origine de la réponse, configurez la distribution CloudFront afin de ne pas transmettre ces paramètres à l'origine. Ensuite, vérifiez si le problème persiste.
Si le problème est résolu après que la distribution ne transfère plus ces paramètres, au moins un paramètre a déclenché la réponse. Plutôt que de configurer CloudFront pour transférer un large éventail de paramètres, ajoutez à la liste des autorisations uniquement les paramètres spécifiques que vous souhaitez voir transférer par CloudFront.
La réponse est-elle stockée dans le cache du navigateur ?
Une fois qu'une demande renvoie la réponse « Cache X : absent de CloudFront », il se peut que le navigateur envoie la même réponse aux requêtes suivantes parce qu'elle est stockée dans le cache du navigateur.
Pour vérifier si la réponse est stockée dans le cache du navigateur, effacez le cache du navigateur et faites une nouvelle demande pour le même objet.
Remarque : pour déterminer la durée selon laquelle le navigateur met l'objet en cache, vérifiez si toutes les En-têtes contrôlées par cache ou expirées sont définies sur l'objet.