Les règles de clé de cache personnalisée génèrent des clés de cache à partir d'éléments spécifiques d'une requête HTTP, tels que l'URI, les paramètres de requête, les en-têtes HTTP ou des variables personnalisées. En regroupant les requêtes visant la même ressource sous une clé de cache uniforme, cette fonctionnalité améliore le taux de succès du cache, réduit les accès à l'origine et diminue les temps de réponse ainsi que la consommation de bande passante.
Comparaison et sélection des fonctionnalités
Conflit entre la clé de cache personnalisée et Ignorer les paramètres : si vous configurez simultanément le filtrage des paramètres et une clé de cache personnalisée, le filtrage des paramètres devient invalide.
-
La fonctionnalité de clé de cache personnalisée offre un contrôle plus fin ; elle est donc recommandée par rapport au filtrage des paramètres. Le tableau suivant compare ces deux fonctionnalités.
Cas d'utilisation
Filtrage des paramètres
Clé de cache personnalisée
Ignorer tous les paramètres de requête dans la clé de cache
Définissez Ignore Parameters sur Yes et laissez le champ Retain Specified Parameters vide.
Ajoutez une règle de paramètre de requête. Définissez Action sur Reserve et définissez Parameter Name sur un nom de paramètre inexistant, tel que
example-argument.Conserver uniquement le paramètre de requête
key1dans la clé de cacheDéfinissez Ignore Parameters sur Yes et définissez Retain Specified Parameters sur
key1.Ajoutez une règle de paramètre de requête. Définissez Action sur Reserve et définissez Parameter Name sur
key1.Supprimer uniquement le paramètre de requête
key1de la clé de cacheDéfinissez Remove Specified Parameters sur
key1.Ajoutez une règle de paramètre de requête. Définissez Action sur Delete et définissez Parameter Name sur
key1. Réécriture des paramètres d'origine : la fonctionnalité de clé de cache personnalisée modifie uniquement la clé de cache et ne change pas l'URL de la requête vers l'origine. La requête vers l'origine reste identique à la requête du client. Pour modifier les paramètres de requête envoyés à votre origine, utilisez Rewrite origin parameters.
Purge du cache : après avoir configuré une clé de cache personnalisée, une tâche de purge par URL peut échouer à faire correspondre le contenu mis en cache. Pour garantir une purge réussie, utilisez la clé de cache finale générée par vos règles comme cible de purge.
Cas d'utilisation
Une clé de cache est un identifiant unique pour un fichier mis en cache sur un point de présence (POP) CDN. Chaque fichier mis en cache possède une clé de cache correspondante. Par défaut, la clé de cache est l'URL de la requête du client, y compris ses paramètres. La fonctionnalité de clé de cache personnalisée ne modifie pas l'URL de la requête vers l'origine. Elle change uniquement la clé de cache. La requête vers l'origine reste identique à la requête originale du client.
CDN est conçu pour accélérer les ressources statiques et ne prend pas en charge l'accélération des API dynamiques. La fonctionnalité de clé de cache personnalisée optimise les stratégies de mise en cache pour les ressources statiques, telles que la normalisation des paramètres d'URL ou la différenciation entre clients, et n'est pas adaptée aux scénarios de mise en cache d'API dynamiques. Pour l'accélération du contenu dynamique, envisagez d'utiliser Edge Security Acceleration (ESA).
Cas d'utilisation 1 : Regrouper les requêtes
Les différentes requêtes clientes incluent souvent des paramètres variés dans l'URL. Même si plusieurs requêtes ciblent le même fichier, les POP CDN traitent les requêtes avec des paramètres d'URL différents comme des fichiers distincts. Cela entraîne plusieurs copies mises en cache et des accès supplémentaires à l'origine.
Utilisez des règles de clé de cache personnalisée pour unifier la clé de cache de ces requêtes, ce qui réduit le taux d'accès à l'origine.
Cas d'utilisation 2 : Différencier les requêtes
Lorsque les requêtes clientes partagent la même URL, CDN les traite comme des requêtes pour le même fichier. Toutefois, vous devrez peut-être servir un contenu différent en fonction d'un champ client dans l'en-tête HTTP qui identifie différents systèmes clients.
Dans ce cas, ajoutez la valeur de l'en-tête client à la clé de cache en utilisant une règle de clé de cache personnalisée. Cela crée une clé de cache distincte pour chaque type de client.
Procédure
Connectez-vous à la console CDN.
Sur la page Domain Names, recherchez le nom de domaine cible et cliquez sur Manage dans la colonne Actions.
Dans le volet de navigation de gauche, choisissez Cache.
-
Sous l'onglet Custom Cache Key, cliquez sur Create Rule pour définir les paramètres suivants :
Rule Condition
Une condition de règle identifie les requêtes en fonction de divers paramètres pour déterminer si une configuration s'applique à une requête spécifique. Si une règle utilise une condition de règle, la priorité de la condition de règle détermine l'ordre d'exécution, et non le paramètre de priorité de la fonctionnalité.
Do not use : la clé de cache personnalisée s'applique à toutes les requêtes sans condition de règle.
Pour ajouter ou modifier une condition de règle : gérez-la dans le moteur de règles. Pour plus d'informations, consultez Rule Conditions et Rules Engine.
URIs
Lorsqu'une URI de requête cliente correspond à l'Source URI de la configuration, le système la remplace par l'Final URI configurée pour générer la clé de cache. Vous pouvez configurer plusieurs politiques de remplacement d'URI. Les politiques sont mises en correspondance séquentiellement de haut en bas. Une fois qu'une Source URI est mise en correspondance, le système applique l'Final URI correspondante et arrête la mise en correspondance des politiques suivantes.
Source URI : une URI qui commence par une barre oblique (
/) et n'inclut pas le préfixehttp://ni le nom de domaine. Les expressions régulières PCRE sont prises en charge.Final URI : une URI qui commence par une barre oblique (
/) et n'inclut pas le préfixehttp://ni le nom de domaine.
Request Parameter
Les opérations s'appliquent aux paramètres de l'URL de requête d'origine. Vous pouvez effectuer les opérations Add, Delete, Modify et Reserve. Le résultat est ajouté à la clé de cache. Si vous configurez plusieurs opérations, elles sont exécutées séquentiellement de haut en bas.
Add : ajoute un nouveau paramètre de requête à la clé de cache. Par exemple, si l'URL d'origine est
http://image.example.com/cat.jpget que vous ajoutez le paramètretype=jpg, la clé de cache devienthttp://image.example.com/cat.jpg?type=jpg.Delete : supprime le paramètre spécifié de l'URL de requête d'origine lors de la génération de la clé de cache. Par exemple, si l'URL d'origine est
http://image.example.com/cat.jpg?type=jpget que vous supprimez le paramètretype, la clé de cache devienthttp://image.example.com/cat.jpg.Modify : modifie la valeur d'un paramètre spécifié dans l'URL de requête d'origine lors de la génération de la clé de cache. Par exemple, si l'URL d'origine est
http://image.example.com/cat.jpg?type=jpget que vous modifiez le paramètre entype=png, la clé de cache devienthttp://image.example.com/cat.jpg?type=png.Reserve : conserve uniquement les paramètres spécifiés de l'URL de requête d'origine lors de la génération de la clé de cache. Tous les autres paramètres sont supprimés. Par exemple, si l'URL d'origine est
http://image.example.com/cat.jpg?type=jpg&path=imageet que vous conservez le paramètretype, la clé de cache devienthttp://image.example.com/cat.jpg?type=jpg.
HTTP Headers
Ajoute les valeurs des en-têtes HTTP spécifiés de la requête d'origine du client à la clé de cache. Vous pouvez spécifier plusieurs noms d'en-tête, séparés par des espaces. Les valeurs sont ajoutées dans l'ordre où les en-têtes sont spécifiés. Par exemple, si l'URL d'origine est
http://image.example.com/cat.jpget que la requête du client contient un en-tête HTTPpath:image, la définition depathdans le champ HTTP Headers produit la clé de cachehttp://image.example.com/cat.jpgimage.Custom Variables
Ajoute des valeurs de variables personnalisées à la clé de cache générée pour améliorer la flexibilité de la mise en cache. Une variable personnalisée se compose des paramètres suivants :
Variable name : un nom personnalisé pour la variable.
-
Source : une valeur de champ transportée dans la requête du client. Les types de source suivants sont disponibles :
Query String Parameter : la chaîne de requête dans l'URL de requête.
Request Header : un en-tête de requête transporté dans la requête du client.
Path : le chemin de la ressource dans l'URL de requête.
Scheme : le protocole utilisé par l'URL de requête. Prend en charge HTTP et HTTPS.
-
Source field : requis uniquement pour les types de source Query String Parameter, Request Header et Request Cookie. Spécifiez l'un des éléments suivants :
Le nom d'un paramètre spécifié dans la chaîne de requête.
Le nom d'un en-tête de requête spécifié.
Match rule : une expression régulière qui correspond à une chaîne spécifique dans la valeur du champ source.
Variable expression : génère la valeur finale de la variable. Prend en charge les chaînes fixes et les références de groupe de capture telles que
$1, qui fait référence au contenu capturé par le premier groupe entre parenthèses.
Cliquez sur OK.
Exemples de configuration
URIs
Les requêtes pour http://aliyundoc.com/a/b/image.jpg et http://aliyundoc.com/a/b/c/image.jpg sont traitées comme des requêtes pour le même fichier. La clé de cache pour ce fichier est http://aliyundoc.com/c/image.jpg. Configurez les règles de réécriture d'URI suivantes : réécrivez l'URI source /a/b vers l'URI finale /c, et réécrivez l'URI source /a/b/c vers l'URI finale /c. Cliquez sur + Add Source URI pour ajouter des règles de réécriture, ou cliquez sur Delete pour supprimer les règles existantes.
Request Parameter
Une requête cliente pour http://aliyundoc.com/a/b/image.jpg?delete_par=1&modify_par=1 est traitée comme suit : add_par=1 est ajouté, delete_par est supprimé et la valeur de modify_par est changée en 2. La clé de cache résultante est http://aliyundoc.com/a/b/image.jpg?modify_par=2&add_par=1.
Si plusieurs opérations ciblent le même paramètre de requête, l'ordre de priorité est : Add > Delete > Reserve > Modify.
L'action Delete prend en charge uniquement un seul nom de paramètre. Pour supprimer plusieurs paramètres, cliquez sur + Add Parameter Operation pour ajouter une règle Delete distincte pour chaque paramètre.
HTTP Headers
Les valeurs des en-têtes User-Agent et Accept-Language d'une requête cliente sont ajoutées à la clé de cache. Par exemple, si une requête pour http://aliyundoc.com/a/b/image.jpg contient les en-têtes User-Agent=Mozilla/5.0 (Linux; X11) et Accept-Language=en, la clé de cache est http://aliyundoc.com/a/b/image.jpgMozilla/5.0(Linux;X11)en. Dans la zone de texte HTTP Headers, saisissez les champs d'en-tête de requête que vous souhaitez inclure, tels que User-Agent et Accept-Language.
Custom Variables
Exemple 1
Le nom de la variable est language, la source est Request Header, le champ source est Accept-Language, la règle de correspondance est ([%w]+),([%w]+) et l'expression de variable est $1aa. Configurez la variable personnalisée comme suit : définissez Variable name sur language, sélectionnez Request Header comme Source, saisissez Accept-Language comme Source field, saisissez ([%w]+),([%w]+) comme Match rule et saisissez $1aa comme Variable expression.
Un client demande http://aliyundoc.com/a/b/image.jpg avec l'en-tête HTTP Accept-Language=en,ch. La règle de correspondance capture en et l'assigne à $1 dans l'expression de variable. L'expression de variable ajoute également aa, ce qui donne la valeur de variable enaa avec l'alias language. Cette valeur est ajoutée à l'URL pour former la clé de cache finale : http://aliyundoc.com/a/b/image.jpgenaa.
Le $n dans l'expression de variable fait référence au contenu capturé par le n-ième groupe entre parenthèses dans la règle de correspondance. Par exemple, avec Accept-Language=en,ch et la règle de correspondance ([%w]+),([%w]+), $1=en et $2=ch.
Exemple 2
Le nom de la variable est expired, la source est Request Cookie, le champ source est a, la règle de correspondance est [%w]+:(.*) et l'expression de variable est $1. Configurez la variable personnalisée comme suit :
Variable name :
expiredSource : Request Cookie
Source field :
aMatch rule :
[%w]+:(.*)Variable expression :
$1
Un client demande http://aliyundoc.com/a/b/image.jpg avec le cookie Cookie a=expired_time:12635187. La règle de correspondance capture 12635187 et l'assigne à $1 dans l'expression de variable, avec l'alias expired. Cette valeur est ajoutée à l'URL pour former la clé de cache finale : http://aliyundoc.com/a/b/image.jpg12635187.
Exemple 3
Cet exemple combine une règle d'URI et une variable personnalisée.
URI :
Regroupez toutes les requêtes dont l'URI correspond à /abc/.*/abc en /abc. L'URI source est /abc/.*/abc et l'URI finale est /abc.
Variables personnalisées :
Le nom de la variable est testname, la source est Path, la règle de correspondance est /abc/xyz/(.*) et l'expression de variable est $1. Configurez comme suit : définissez Variable name sur testname, définissez Source sur Path, définissez Match rule sur /abc/xyz/(.*) et définissez Variable expression sur $1.
Un client demande http://aliyundoc.com/abc/xyz/abc/image.jpg. Selon la configuration de l'URI, la clé de cache est réécrite en http://aliyundoc.com/abc/image.jpg. Ensuite, selon la configuration de la variable personnalisée, le chemin de la requête d'origine correspond à /abc/xyz/(.*). À ce stade, $1 reçoit la valeur abc/image.jpg et est ajouté à la clé de cache, formant la clé de cache finale : http://aliyundoc.com/abc/image.jpgabc/image.jpg. Cela montre comment vous pouvez combiner des règles pour mettre en œuvre une logique de mise en cache plus complexe.
Si une variable personnalisée pour la clé de cache n'est pas mise en correspondance, l'expression de variable $1 n'est pas ajoutée à la clé de cache.
Exemple 4
Cet exemple combine une condition de règle et une variable personnalisée pour générer différentes clés de cache pour les requêtes provenant de clients mobiles et PC.
Condition de règle Mobile :
L'en-tête User-Agent contient l'une des chaînes suivantes : *Mobile*,*Android*,*iPhone*,*ipad*.
Condition de règle PC :
L'en-tête User-Agent ne contient aucune des chaînes suivantes : *Mobile*,*Android*,*iPhone*,*ipad*.
Clé de cache personnalisée Mobile :
Pour Rule Condition, sélectionnez Mobile. Pour les Custom Variables, définissez Variable Name sur Mobile, Source sur Path, Matching Rule sur / et Variable Expression sur +mobile.
Clé de cache personnalisée PC :
Pour Rule Condition, sélectionnez PC. Pour les Custom Variables, définissez Variable Name sur PC, Source sur Path, Matching Rule sur / et Variable Expression sur +pc.
Pour une requête cliente vers http://aliyundoc.com/image.jpg, la requête correspond soit à la règle de clé de cache personnalisée Mobile, soit à la règle PC en fonction de la valeur de User-Agent. La clé de cache finale pour les clients mobiles est http://aliyundoc.com/image.jpg+mobile et la clé de cache finale pour les clients PC est http://aliyundoc.com/image.jpg+pc.