Lorsqu'un nœud CDN DCDN récupère une ressource depuis le serveur d'origine, ce dernier renvoie un code d'état de réponse. Vous pouvez configurer une durée de mise en cache pour ces codes d'état dans Alibaba Cloud CDN DCDN. Lorsqu'un client demande à nouveau la même ressource, CDN DCDN renvoie directement le code d'état sans déclencher de requête vers l'origine, ce qui réduit la charge sur le serveur d'origine. Une fois la durée de cache configurée expirée, une nouvelle requête vers l'origine est déclenchée.
Scénarios
Le TTL (Time To Live) des codes d'état s'applique principalement aux scénarios où le serveur d'origine renvoie des codes d'état anormaux. Il définit l'action de mise en cache que les nœuds CDN effectuent pour ces codes.
Dans des conditions normales, lorsqu'un nœud CDN récupère avec succès la ressource demandée depuis le serveur d'origine, c'est-à-dire lorsque le serveur renvoie un code d'état 2xx, la ressource est mise en cache selon les règles décrites dans la rubrique Configurer l'expiration du cache CDN. Si le serveur d'origine ne peut pas répondre rapidement à tous les codes d'état (par exemple, les codes autres que 2xx) et que vous souhaitez éviter que toutes les requêtes ne soient traitées par le serveur d'origine, vous pouvez configurer le TTL des codes d'état. Ainsi, les nœuds CDN renvoient directement les codes d'état, ce qui allège la charge du serveur d'origine.
Scénario typique
Le fichier A a été supprimé du serveur d'origine, mais les clients continuent de le demander. Les nœuds CDN ne mettent pas en cache le fichier A ; par conséquent, toutes les requêtes concernant ce fichier sont transférées au serveur d'origine, qui renvoie un code d'état 4xx. Cette situation augmente considérablement la charge du serveur d'origine. Si la mise en cache des codes d'état 4xx est configurée sur les nœuds CDN, le nœud met en cache le code 4xx après la première requête vers l'origine pour le fichier A. Pendant la durée de cache configurée, lorsqu'un client demande à nouveau le fichier A, le nœud CDN renvoie directement le code d'état 4xx sans interroger le serveur d'origine.
Règles de cache pour les codes d'état anormaux
-
Pour les codes d'état 204, 301, 305, 404, 405, 414, 424, 429, 500, 501, 502, 503 et 504, les règles de cache sont les suivantes :
Si le serveur d'origine renvoie l'en-tête de réponse
set-cookie, CDN DCDN ne met pas la réponse en cache.Si le serveur d'origine ne renvoie pas l'en-tête de réponse Set-Cookie, la réponse est mise en cache selon le TTL du code d'état configuré dans la console CDN DCDN. Si plusieurs règles sont configurées, consultez la section Priorité des règles multiples pour déterminer la règle effective.
Si le serveur d'origine ne renvoie pas l'en-tête de réponse Set-Cookie et qu'aucun TTL de code d'état n'est configuré dans la console CDN DCDN, la réponse est mise en cache selon l'en-tête de réponse Pragma, Cache-Control ou Expires défini par le serveur d'origine.
Si le serveur d'origine ne renvoie aucun des en-têtes de réponse Set-Cookie, Pragma, Cache-Control ou Expires et qu'aucun TTL de code d'état n'est configuré dans la console CDN DCDN, la réponse est mise en cache pendant 1 seconde par défaut.
-
Pour les codes d'état 302, 307 et 403, les règles de cache sont les suivantes :
Si le serveur d'origine renvoie l'en-tête de réponse
set-cookie, CDN DCDN ne met pas la réponse en cache.Si le serveur d'origine ne renvoie pas l'en-tête de réponse Set-Cookie, la réponse est mise en cache selon le TTL du code d'état configuré dans la console CDN DCDN. Si plusieurs règles sont configurées, consultez la section Priorité des règles multiples pour déterminer la règle effective.
Si le serveur d'origine ne renvoie pas l'en-tête de réponse Set-Cookie et qu'aucun TTL de code d'état n'est configuré dans la console CDN DCDN, la réponse est mise en cache selon l'en-tête de réponse Pragma, Cache-Control ou Expires défini par le serveur d'origine.
Si le serveur d'origine ne renvoie aucun des en-têtes de réponse Set-Cookie, Pragma, Cache-Control ou Expires et qu'aucun TTL de code d'état n'est configuré dans la console CDN DCDN, la réponse n'est pas mise en cache.
Pour le code d'état 304, CDN DCDN ne met pas la réponse en cache et il est impossible de configurer une durée de cache.
-
Pour les autres codes d'état anormaux, tels que le code 400, les règles de cache sont les suivantes :
Si le serveur d'origine renvoie l'en-tête de réponse
set-cookie, CDN DCDN ne met pas la réponse en cache.Si le serveur d'origine ne renvoie pas l'en-tête de réponse Set-Cookie, la réponse est mise en cache selon le TTL du code d'état configuré dans la console CDN DCDN. Si plusieurs règles sont configurées, consultez la section Priorité des règles multiples pour déterminer la règle effective.
Dans les autres cas, la réponse n'est pas mise en cache.
-
Pour les requêtes utilisant la récupération par plage (range origin fetch), si un nœud CDN DCDN reçoit un code d'état différent de 206 du serveur d'origine, le nœud CDN DCDN supprime les tranches mises en cache (un délai d'attente lors de la récupération depuis l'origine n'entraîne pas la suppression des fichiers mis en cache).
Lors d'une récupération par plage, le serveur d'origine divise un fichier volumineux en plusieurs tranches plus petites et les renvoie aux nœuds CDN DCDN. Par exemple, un fichier est divisé en 10 tranches et un nœud CDN DCDN a déjà mis en cache cinq tranches. Lorsque le nœud demande la sixième tranche, le serveur d'origine renvoie un code d'état 5xx. Dans ce cas, les cinq tranches précédemment mises en cache sont supprimées.
Priorité des règles multiples
Vous pouvez configurer plusieurs règles de cache pour les codes d'état. Si une requête correspond simultanément à plusieurs règles, une seule règle s'applique. La règle effective est déterminée comme suit :
-
Ordre d'évaluation :
Le type de règle est évalué en premier (extension de fichier > répertoire), puis la date de création de la règle est prise en compte (créée plus tôt > créée plus tard).
-
Priorité des règles de types différents : extension de fichier > répertoire.
Par exemple, une requête correspond simultanément à deux règles (le code d'état 404 est configuré dans les deux règles) dont les types sont File Extension et Directory. Dans ce cas, la durée d'expiration du code d'état 404 est déterminée par la règle de type File Extension. Pour un exemple concret, consultez la section Exemples de configuration.
-
Priorité des règles de même type : créée plus tôt > créée plus tard (de haut en bas dans la liste des règles).
Par exemple, une requête correspond simultanément à deux règles (le code d'état 404 est configuré dans les deux règles) qui sont du même type (toutes deux de type File Extension ou toutes deux de type Directory). Dans ce cas, la durée d'expiration du code d'état 404 est déterminée par la règle créée en premier. Pour un exemple concret, consultez la section Exemples de configuration.
Procédure
Connectez-vous à la console CDN.
Dans le volet de navigation de gauche, cliquez sur Domain Names.
Sur la page Domain Names, localisez le nom de domaine cible et cliquez sur Manage dans la colonne Actions.
Dans le volet de navigation du domaine, cliquez sur Cache.
Cliquez sur l'onglet Status Code TTL.
-
Cliquez sur Create Rule et configurez le TTL du code d'état.
Paramètre
Description
Type
Deux types sont pris en charge : Directory et File Extension. Sélectionnez un type en fonction de vos besoins métier.
RemarquePriorité des règles de types différents : extension de fichier > répertoire. Pour plus d'informations, consultez la section Règles de cache pour les codes d'état anormaux.
Object
Si vous définissez le type sur Directory, tenez compte des éléments suivants :
Vous ne pouvez ajouter qu'un seul répertoire à la fois.
Vous pouvez saisir le chemin complet du répertoire. Le chemin doit commencer par une barre oblique (/), par exemple /directory/aaa.
Si vous définissez le type sur File Extension, tenez compte des éléments suivants :
Vous pouvez saisir une ou plusieurs extensions de fichier. Séparez les extensions multiples par des virgules (,), par exemple
jpg,txt.RemarqueSi les extensions de fichier configurées dans différents enregistrements sont exactement identiques et ne diffèrent que par la casse, l'enregistrement créé ultérieurement écrase l'enregistrement créé précédemment. Par exemple, après avoir créé une règle jpg,txt, la création d'une autre règle jpg,txt écrase l'enregistrement précédent. Dans ce cas, si vous devez configurer une règle en minuscules, vous pouvez créer des règles distinctes pour txt et jpg. Les règles configurées sont strictement sensibles à la casse lors de leur application.
Les astérisques (*) ne peuvent pas être utilisés pour correspondre à tous les types de fichiers.
Expire In
Les codes d'état à mettre en cache et leurs durées de cache. La durée maximale est de trois ans. Unité : secondes. Les règles de configuration sont les suivantes :
Séparez les codes d'état multiples par des virgules (,).
Pour les codes d'état 2xx et 3xx, seule la configuration exacte de codes individuels est prise en charge. La configuration floue par lot n'est pas prise en charge. Par exemple, 201=10 est pris en charge, mais 2xx=12 ne l'est pas.
Pour les codes d'état 4xx et 5xx, la configuration exacte de codes individuels et la configuration floue par lot sont toutes deux prises en charge. Par exemple, 401=10 et 4xx=12 sont tous deux pris en charge.
Honor Origin TTL
Si vous activez cette option et que le serveur d'origine renvoie des en-têtes de politique de cache (y compris Cache-Control et Pragma), la politique de cache renvoyée par le serveur d'origine est prioritaire.
Ignore Origin No-Cache Headers
Si vous activez cette option, les nœuds CDN ignorent les en-têtes de politique de cache suivants renvoyés par le serveur d'origine. Tous ces en-têtes indiquent que le contenu n'est pas mis en cache.
Cache-Control: no-store
Cache-Control: no-cache
Cache-Control: max-age=0
Pragma: no-cache
Clients Follow the CDN Cache Policy
Si vous activez cette option, les nœuds CDN renvoient aux clients la politique de cache finalement appliquée.
Force Content Revalidation
Ce paramètre prend effet uniquement lorsque la durée d'expiration du cache est définie sur 0. Les effets sont les suivants :
Désactivé (par défaut) : si la durée d'expiration du cache de CDN est définie sur 0, les fichiers ne sont pas mis en cache sur les nœuds CDN et chaque requête doit déclencher une récupération depuis l'origine pour obtenir le contenu.
Activé : si la durée d'expiration du cache de CDN est définie sur 0, les fichiers peuvent être mis en cache sur les nœuds CDN et chaque requête doit déclencher une récupération depuis l'origine pour revalider le contenu mis en cache.
-
Cliquez sur OK pour terminer la configuration.
Une fois le TTL du code d'état configuré, vous pouvez Modify ou Delete la configuration actuelle dans la liste Expire In.
Exemples de configuration
-
Exemple 1 : une règle de type répertoire
Créez une règle de type répertoire, comme illustré dans la figure suivante :

Dans le répertoire /directory/aaa, tous les codes d'état 4xx sont mis en cache pendant 10 secondes et le code d'état 201 est mis en cache pendant 15 secondes. Pendant ces durées, les nœuds CDN répondent directement aux requêtes correspondantes. Une fois les durées expirées, une récupération depuis l'origine est déclenchée.
-
Exemple 2 : une règle de type extension de fichier
Créez une règle de type extension de fichier, comme illustré dans la figure suivante :

Pour les fichiers dont l'extension est .jpg ou .txt, le code d'état 403 est mis en cache pendant 10 secondes et le code d'état 404 est mis en cache pendant 15 secondes. Pendant ces durées, les nœuds CDN répondent directement aux requêtes correspondantes. Une fois les durées expirées, une récupération depuis l'origine est déclenchée.
-
Exemple 3 : priorité des règles de types différents
Une règle de type répertoire et une règle de type extension de fichier sont créées, avec des durées d'expiration différentes pour les codes d'état, comme illustré dans la figure suivante :

Un utilisateur demande
http://example.com/directory/aaa/test.jpg. La ressource n'est pas mise en cache sur le nœud CDN, donc le nœud CDN demande la ressource au serveur d'origine, qui renvoie le code d'état 404. La requête correspond à la fois à la règle de type répertoire et à la règle de type extension de fichier. Étant donné que les règles de types différents s'appliquent dans l'ordre extension de fichier > répertoire, la règle de type extension de fichier s'applique et la durée de cache réelle du code d'état 404 est de 20 secondes. -
Exemple 4 : priorité des règles multiples de même type
La règle de type répertoire 1 est créée en premier et correspond à l'adresse /directory. Ensuite, la règle de type répertoire 2 est créée et correspond à l'adresse /directory/aaa. Des durées d'expiration différentes sont configurées pour les codes d'état, comme illustré dans la figure suivante :

Un utilisateur demande
http://example.com/directory/aaa/test.jpg. La ressource n'est pas mise en cache sur le nœud CDN, donc le nœud CDN demande la ressource au serveur d'origine, qui renvoie le code d'état 404. La requête correspond aux deux règles de type répertoire. Étant donné que les règles de même type s'appliquent dans l'ordre créée plus tôt > créée plus tard, la règle de type répertoire 1, créée en premier, s'applique et la durée de cache réelle du code d'état 404 est de 15 secondes. -
Exemple 5 : résoudre le problème de mise en cache persistante d'une redirection 301
Un nom de domaine accéléré par CDN renvoie continuellement une redirection 301 vers un autre nom de domaine, mais le serveur d'origine ne renvoie plus la redirection lorsqu'il est accédé directement (en contournant le CDN). Dans ce cas, vous pouvez ajouter une règle dans Status Code TTL, définir le code d'état sur
301et la durée de cache sur0(c'est-à-dire 301=0), afin que les nœuds CDN ne mettent plus en cache les réponses 301. Une fois la configuration terminée, soumettez une tâche d'actualisation pour l'URL afin d'actualiser le cache CDN, effacer les réponses 301 mises en cache et appliquer immédiatement la règle. Ensuite, effacez le cache local du navigateur et accédez à nouveau à l'URL pour vérifier le résultat.