Gérer l’expiration de contenu web dans Azure Content Delivery Network

Les fichiers des serveurs web d’origine accessibles publiquement peuvent être mis en cache dans Azure Content Delivery Network jusqu’à l’expiration de leur durée de vie (TTL). La durée de vie est déterminée par l’en-tête Cache-Control dans la réponse HTTP du serveur d’origine. Cet article explique comment définir les en-têtes Cache-Control pour la fonctionnalité Web Apps de Microsoft Azure App Service, Services cloud Azure, les applications ASP.NET et les sites IIS (Internet Information Services), qui sont tous configurés de façon similaire. Vous pouvez définir l’en-tête Cache-Control à l’aide de fichiers de configuration ou par programme.

Vous pouvez également contrôler les paramètres de cache dans le portail Azure, en définissant des règles de mise en cache du réseau de distribution de contenu. Si vous avez créé une ou plusieurs règles de mise en cache, puis défini leur comportement sur Remplacer ou Ignorer le cache, les paramètres de mise en cache fournis à l’origine décrits dans cet article sont ignorés. Pour plus d’informations sur les concepts généraux de mise en cache, consultez la section Fonctionnement de la mise en cache.

Conseil

Vous pouvez choisir de ne pas définir de durée de vie sur un fichier. Dans ce cas, Azure Content Delivery Network applique automatiquement une durée de vie par défaut de sept jours, sauf si vous avez configuré des règles de mise en cache dans le portail Azure. Cette valeur TTL par défaut s’applique uniquement aux optimisations de remise web générales. Pour optimiser les fichiers volumineux, la durée de vie par défaut est de 1 jour, et pour les optimisations du streaming multimédia, la durée de vie par défaut est de 1 an.

Pour plus d’informations sur la façon dont Azure Content Delivery Network accélère l’accès aux fichiers et à d’autres ressources, consultez Vue d’ensemble d’Azure Content Delivery Network.

Définition des en-têtes Cache-Control avec des règles de mise en cache du réseau de distribution de contenu

La méthode recommandée pour définir l’en-tête Cache-Control d’un serveur web consiste à utiliser des règles de mise en cache dans le portail Azure. Pour plus d’informations sur les règles de mise en cache du réseau de distribution de contenu, consultez Contrôler le comportement de mise en cache d’Azure Content Delivery Network avec des règles de mise en cache.

Remarque

Les règles de mise en cache sont disponibles uniquement pour les profils Azure CDN standard d’Edgio. Pour les profils Azure CDN Premium d'Edgio, vous devez utiliser le moteur de règles Azure Content Delivery Network dans le portail Gérer pour avoir des fonctionnalités similaires.

Pour accéder à la page des règles de mise en cache CDN :

  1. Dans le portail Azure, sélectionnez un profil de réseau de distribution de contenu, puis sélectionnez le point de terminaison du serveur web.

  2. Dans le volet gauche, sous Paramètres, sélectionnez Règles de mise en cache.

    Capture d’écran du bouton des règles de mise en cache du réseau de distribution de contenu.

    La page Règles de mise en cache s’affiche.

    Capture d’écran de la page de mise en cache du réseau de distribution de contenu.

Pour définir les en-têtes Cache-Control du serveur web à l’aide de règles de mise en cache générales :

  1. Sous Règles de mise en cache générales, définissez Comportement de mise en cache des chaînes de requête sur Ignorer les chaînes de requête, puis définissez Comportement de mise en cache sur Remplacer.

  2. Pour Durée d’expiration du cache, entrez 3 600 dans la zone Secondes ou 1 dans la zone Heures.

    Capture d’écran d’un exemple de règles de mise en cache du réseau de distribution de contenu.

    Cette règle de mise en cache générale définit une durée de mise en cache d’une heure et affecte toutes les requêtes au point de terminaison. Elle remplace les en-têtes HTTP Cache-Control ou Expires qui sont envoyés par le serveur d’origine spécifié par le point de terminaison.

  3. Sélectionnez Enregistrer.

Pour définir les en-têtes Cache-Control d’un fichier de serveur web à l’aide de règles de mise en cache personnalisées :

  1. Sous Règles de mise en cache personnalisées, créez deux conditions de correspondance :

    1. Pour la première condition de correspondance, définissez Condition de correspondance sur Chemin, puis entrez /webfolder1/* pour Valeur(s) de correspondance. Définissez Comportement de mise en cache sur Remplacer et entrez 4 dans la zone Jours.

    2. Pour la deuxième condition de correspondance, définissez Condition de correspondance sur Chemin, puis entrez /webfolder1/file1.txt pour Valeur(s) de correspondance. Définissez Comportement de mise en cache sur Remplacer et entrez 2 dans la zone Jours.

    Capture d’écran d’un exemple de règles de mise en cache personnalisées du réseau de distribution de contenu.

    La première règle de mise en cache personnalisée définit une durée de mise en cache de quatre jours pour tous les fichiers du dossier /webfolder1 présent sur le serveur d’origine spécifié par votre point de terminaison. La deuxième règle remplace la première règle pour le fichier file1.txt uniquement et définit une durée de mise en cache de deux jours pour celui-ci.

  2. Sélectionnez Enregistrer.

Définition d’en-têtes Cache-Control à l’aide de fichiers de configuration

Pour le contenu statique, tel que les images et les feuilles de style, vous pouvez contrôler la fréquence de mise à jour en modifiant les fichiers de configuration applicationHost.config ou web.config de votre application web. Pour définir l’en-tête Cache-Control pour votre contenu, utilisez l’élément <system.webServer>/<staticContent>/<clientCache> dans l’un des fichiers.

Utilisation des fichiers ApplicationHost.config

Le fichier ApplicationHost.config est le fichier racine du système de configuration IIS. Les paramètres de configuration du fichier applicationHost.config affectent toutes les applications sur le site, mais sont remplacés par les paramètres des fichiers web.config existants pour une application web.

Utilisation de fichiers Web.config

Avec un fichier Web.config, vous pouvez personnaliser le comportement de l’ensemble de votre application web ou un répertoire spécifique de celle-ci. En général, vous avez au moins un fichier Web.config dans le dossier racine de votre application web. Pour chaque fichier Web.config d’un dossier spécifique, les paramètres de configuration affectent tout le contenu du dossier et de ses sous-dossiers, sauf s’ils sont remplacés au niveau du sous-dossier par un autre fichier Web.config.

Par exemple, vous pouvez définir un élément <clientCache> dans un fichier Web.config dans le dossier racine de votre application web pour mettre en cache tout le contenu statique de votre application web pendant trois jours. Vous pouvez également ajouter un fichier Web.config dans un sous-dossier avec un contenu plus variable (par exemple, \frequent) et définir son élément <clientCache> pour mettre en cache le contenu du sous-dossier pendant 6 heures. Il en résulte que le contenu de l’ensemble du site web est mis en cache pendant trois jours, à l’exception du contenu du répertoire \frequent qui est mis en cache pendant six heures seulement.

L’exemple de fichier de configuration XML suivant montre comment configurer l’élément <clientCache> pour spécifier un âge maximal de trois jours :

<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="3.00:00:00" />
        </staticContent>
    </system.webServer>
</configuration>

Pour utiliser l’attribut cacheControlMaxAge, vous devez définir la valeur de l’attribut cacheControlMode sur UseMaxAge. Ce paramètre a provoqué l’ajout de l’en-tête HTTP et de la directive Cache-Control: max-age=<nnn> à la réponse. Le format de la valeur de période pour l’attribut cacheControlMaxAge est <days>.<hours>:<min>:<sec>. Sa valeur est convertie en secondes et est utilisée comme valeur de la directive Cache-Controlmax-age. Pour plus d’informations sur l’élément <clientCache>, consultez Cache client <clientCache>.

Définition d’en-têtes Cache-Control par programme

Pour les applications ASP.NET, vous contrôlez programmatiquement le comportement de mise en cache du réseau de distribution de contenu en définissant la propriété HttpResponse.Cache de l’API .NET. Pour plus d’informations sur la propriété HttpResponse.Cache, consultez les pages HttpResponse.Cache, propriété et HttpCachePolicy, classe.

Pour mettre en cache par programmation le contenu d’application dans ASP.NET, suivez ces étapes :

  1. Vérifiez que le contenu est marqué comme pouvant être mis en cache en définissant HttpCacheability sur Public.
  2. Définissez un validateur de cache en appelant une des méthodes HttpCachePolicy suivantes :
    • Appelez SetLastModified pour définir une valeur d’horodatage pour l’en-tête Last-Modified.
    • Appelez SetETag pour définir une valeur pour l’en-tête ETag.
  3. Si vous le souhaitez, spécifiez un délai d’expiration du cache en appelant SetExpires pour définir une valeur pour l’en-tête Expires. Sinon, l’approche de cache par défaut décrite précédemment dans ce document s’applique.

Par exemple, pour mettre en cache du contenu pendant une heure, ajoutez le code C# suivant :

// Set the caching parameters.
Response.Cache.SetExpires(DateTime.Now.AddHours(1));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetLastModified(DateTime.Now);

Test de l’en-tête Cache-Control

Vous pouvez facilement vérifier les paramètres de durée de vie de votre contenu web. Avec les outils de développement de votre navigateur, vérifiez que votre contenu web comprend l’en-tête de réponse Cache-Control. Vous pouvez également utiliser un outil tel que wget, Postman ou Fiddler pour examiner les en-têtes de réponse.

Étapes suivantes