Partager via


Cache local dans Azure App Service

Conseil / Astuce

Vous pouvez également poser les questions suivantes à Microsoft Copilot Azure :

  • Comment fonctionne un cache local dans Azure App Service ?
  • Quels sont les avantages de l’utilisation d’un cache local dans Azure App Service ?
  • Quelles sont les limitations de l’utilisation d’un cache local dans Azure App Service ?

Pour rechercher Copilot dans Azure, dans la barre d’outils du portail Azure , sélectionnez Copilot.

Le contenu Azure App Service est stocké dans le Stockage Azure et est exposé en tant que partage de contenu durable. Ce design fonctionne avec différentes applications et possède les attributs suivants :

  • Le contenu est partagé entre plusieurs instances de machine virtuelle de l’application.
  • Le contenu est durable et les applications en cours d’exécution peuvent le modifier.
  • Les fichiers journaux et les fichiers de données de diagnostic sont disponibles sous le même dossier de contenu partagé.
  • La publication d’un nouveau contenu met directement à jour le dossier de contenu. Vous pouvez afficher immédiatement le même contenu via le site web du gestionnaire de contrôle de code source (SCM, également appelé Kudu) et l’application en cours d’exécution. Toutefois, certaines technologies (telles que ASP.NET) peuvent lancer un redémarrage d’une application sur certaines modifications de fichier pour charger le contenu le plus récent.

Même si de nombreuses applications utilisent une ou plusieurs de ces fonctionnalités, certaines autres ont besoin d’un magasin de contenu en lecture seule très performant à partir duquel elles peuvent s’exécuter avec une haute disponibilité. Ces applications peuvent tirer parti de l’exécution sur un cache local sur l’instance de machine virtuelle.

La fonctionnalité de cache local d’Azure App Service fournit un affichage de rôle Web de votre contenu. Ce contenu est un cache d’écriture avec rejet de votre contenu de stockage qui est créé de façon asynchrone au démarrage du site. Quand le cache est prêt, le site bascule pour s’exécuter sur le contenu mis en cache.

Les applications utilisant un cache local bénéficient des avantages suivants :

  • Elles sont insensibles aux latences liées à l’accès au contenu dans Stockage Azure.
  • Les problèmes de connexion au stockage ne les affectent pas, car la copie en lecture seule est incluse dans un cache local.
  • Elles subissent moins de redémarrages dus aux modifications dans le partage de stockage.

Remarque

La fonctionnalité de cache local n’est pas prise en charge dans les applications de fonction ou les applications App Service conteneurisées, telles que dans les conteneurs Windows ou dans des conteneurs Linux intégrés ou personnalisés. Une version de la fonctionnalité disponible pour ces types d’applications est App Cache.

La fonctionnalité de cache local n’est pas non plus prise en charge dans les niveaux tarifaires F1 et D1 d’App Service.

Impact du cache local sur le comportement d’App Service

La configuration d’un cache local provoque ces modifications :

  • D:\home pointe désormais vers le cache local, qui est créé sur l’instance de machine virtuelle au démarrage de l’application. D:\local continue de pointer vers le stockage propre à la machine virtuelle temporaire.

  • Le cache local contient une copie ponctuelle des dossiers /site et /siteextensions à partir du magasin de contenu partagé. Ces dossiers se trouvent respectivement à D:\home\site et D:\home\siteextensions. Ces fichiers sont copiés dans le cache local au démarrage de l’application.

    La taille de ces deux dossiers est limitée à 1 Go par défaut, mais vous pouvez l’augmenter jusqu’à 2 Go. Plus la taille du cache augmente, plus son chargement prend du temps. Si vous augmentez la limite du cache local à 2 Go et que les fichiers copiés dépassent cette taille maximale, App Service ignore silencieusement le cache local et lit à partir du partage de fichiers distant.

    Important

    Lorsque les fichiers copiés dépassent la limite de taille du cache local définie ou lorsqu'aucune limite n'est définie, les opérations de déploiement et d'échange peuvent échouer avec une erreur. Pour plus d’informations, consultez le FAQ sur les limites de taille plus loin dans cet article.

  • Le cache local est en lecture et en écriture. Cependant, toutes les modifications sont ignorées lorsque l’application redémarre ou qu’elle se déplace entre des machines virtuelles. N’utilisez pas le cache local pour stocker des données stratégiques.

  • D:\home\LogFiles et D:\home\Data contiennent des fichiers journaux et des données d’application. Ces deux dossiers sont stockés localement sur l’instance de machine virtuelle et sont régulièrement copiés dans le magasin de contenu partagé. Bien que les applications puissent conserver les fichiers journaux et les données en écrivant dans ces dossiers, le processus de copie est le plus performant. Les fichiers journaux et les données peuvent être perdus si une instance de machine virtuelle cesse soudainement de répondre.

  • La meilleure copie possible affecte le streaming des journaux. Vous pouvez observer jusqu’à une minute de délai dans les journaux d’activité diffusés en continu.

  • Dans le magasin de contenu partagé, la structure de dossiers pour LogFiles et Data change pour les applications qui utilisent un cache local. Il existe désormais des sous-dossiers dont les noms sont composés d’un identificateur unique et d’un horodatage. Chaque sous-dossier correspond à une instance de machine virtuelle sur laquelle l’application s’exécute ou s’est exécutée.

  • Les autres dossiers de D:\home restent dans le cache local et ne sont pas copiés dans le magasin de contenu partagé.

  • Le déploiement d’applications via n’importe quelle méthode prise en charge publie directement dans le magasin de contenu partagé durable. Pour actualiser les dossiers D:\home\site et D:\home\siteextensions dans le cache local, vous devez redémarrer l’application. Pour un cycle de vie fluide, consultez la section relative aux meilleures pratiques plus loin dans cet article.

  • L’affichage de contenu par défaut du site SCM continue de refléter le magasin de contenu partagé.

Remarque

Si vous utilisez Java (Java SE, Tomcat ou JBoss EAP), alors les artefacts Java (fichiers .jar, .war et .ear) sont automatiquement copiés localement sur le worker. Si votre application Java dépend d’un accès en lecture seule à des fichiers supplémentaires, définissez JAVA_COPY_ALL sur true afin que ces fichiers soient également copiés. Si un cache local est activé, il est prioritaire par rapport à ce comportement spécifique à Java.

Méthodes d’activation d’un cache local

Configurez un cache local à l’aide d’une combinaison de paramètres d’application réservés. Vous pouvez définir ces paramètres d’application en utilisant l’une des méthodes suivantes.

Configurer un cache local à l’aide du Portail Azure

Activez un cache local pour chaque application web en ajoutant ce paramètre d’application : WEBSITE_LOCAL_CACHE_OPTION = Always.

Configurer un cache local à l’aide d’Azure Resource Manager

{
    "apiVersion": "2015-08-01",
    "type": "config",
    "name": "appsettings",
    "dependsOn": [
        "[resourceId('Microsoft.Web/sites/', variables('siteName'))]"
    ],

    "properties": {
        "WEBSITE_LOCAL_CACHE_OPTION": "Always",
        "WEBSITE_LOCAL_CACHE_SIZEINMB": "1000"
    }
}

Modifier le paramètre de taille dans le cache local

Par défaut, la taille du cache local est de 1 Go. Cette taille inclut les dossiers /site et /siteextensions copiés à partir du magasin de contenu. Cela inclut également tous les journaux générés localement ainsi que les dossiers de données.

Pour augmenter cette limite, utilisez le paramètre d’application WEBSITE_LOCAL_CACHE_SIZEINMB. Vous pouvez augmenter la taille jusqu’à 2 Go (2 000 Mo) par application. N’oubliez pas qu’une plus grande taille de cache augmente le temps de chargement du cache.

Bonnes pratiques pour utiliser un cache local

Nous vous recommandons d’utiliser un cache local conjointement avec la fonctionnalité d’environnements intermédiaires .

Le processus suivant représente les bonnes pratiques pour l’utilisation d’un cache local :

  1. Ajoutez le paramètre d’application associée WEBSITE_LOCAL_CACHE_OPTION avec la valeur Always à votre emplacement de production. Si vous utilisez WEBSITE_LOCAL_CACHE_SIZEINMB, marquez également ce paramètre comme paramètre rémanent pour l’emplacement de production.

  2. Créez un emplacement de préproduction pour y effectuer des publications. En général, on ne configure pas l’emplacement de préproduction pour utiliser un cache local, ce qui permet de garantir un cycle de vie fluide de compilation, déploiement et test, tout en conservant les avantages du cache local pour l’environnement de production.

  3. Testez votre site dans l’emplacement de préproduction.

  4. Lorsque vous êtes prêt, effectuez une opération d’échange entre les emplacements de préproduction et de production.

Les paramètres persistants sont liés à l’emplacement. Quand l’emplacement de préproduction est échangé avec l’emplacement de production, il hérite des paramètres d’application du cache local. L’emplacement de production qui vient d’être échangé s’exécute sur le cache local après quelques minutes et est réchauffé pendant la préchauffage de l’emplacement. Une fois l’échange terminé, votre emplacement de production s’exécute sur le cache local.

Questions fréquentes

Que se passe-t-il si je dépasse la limite de taille du cache local ?

Si les fichiers copiés dépassent la limite de taille du cache local, l’application revient à une lecture depuis le partage distant. Le tableau suivant présente les détails.

Taille du cache local Fichiers copiés Résultat
≤ 2 GO ≤ taille du cache local Lit à partir du cache local.
≤ 2 GO > taille du cache local Lit depuis le partage distant.

Le déploiement et les opérations d’échange peuvent échouer avec une erreur.

Comment puis-je savoir si mon application peut bénéficier d'un cache local ?

Un cache local est adapté si toutes ces conditions s’appliquent :

  • Votre application nécessite un magasin de contenu de haute performance et fiable.
  • Votre application n’utilise pas le magasin de contenu pour écrire des données critiques au moment de l’exécution.
  • La taille totale est inférieure à 2 GO.

Pour vérifier la taille totale de vos dossiers /site et /siteextensions, vous pouvez utiliser l’extension de site Azure Web Apps Disk Usage.

Comment savoir si mon site a basculé pour utiliser le cache local ?

Lorsque vous utilisez un cache local avec des environnements intermédiaires, l’opération de permutation ne se termine pas tant que le cache local n’est pas initialisé. Pour vérifier si votre site s’exécute sur le cache local, examinez la variable d’environnement de processus de travail WEBSITE_LOCALCACHE_READY. Pour inspecter cette variable sur plusieurs instances, reportez-vous aux instructions Kudu pour la variable d’environnement de processus de travail.

Pourquoi mon application ne reflète-t-elle pas les modifications récemment publiées ?

Si votre application utilise un cache local, vous devez redémarrer le site pour charger les dernières modifications. Si vous préférez ne pas publier de modifications directement sur votre site de production, envisagez d’utiliser des emplacements de déploiement, comme décrit dans la section précédente sur les meilleures pratiques.

Remarque

L’option d’exécution à partir d’un déploiement de package n’est pas compatible avec la fonctionnalité de cache local.

Où sont mes journaux d’activité ?

Lorsque vous utilisez un cache local, la structure de vos dossiers de journaux et de données change légèrement. Les sous-dossiers sont désormais imbriqués sous un dossier dont le nom est composé de l’identifiant unique de la machine virtuelle et d’un horodatage. Chaque dossier correspond à l’instance de machine virtuelle sur laquelle l’application s’exécute ou s’est exécutée.

Pourquoi mon application redémarre-t-elle toujours avec un cache local activé ?

Un cache local contribue à limiter les redémarrages d’application liés au stockage. Cependant, votre application pourrait toujours redémarrer lors des mises à jour d’infrastructure planifiées sur la machine virtuelle. Dans l'ensemble, vous devriez constater moins de redémarrages avec un cache local activé.

Un cache local exclut-il des répertoires de la copie vers le disque local plus rapide ?

Pendant le processus de copie, tout dossier nommé repository est exclu. Ce comportement est utile dans les scénarios où le contenu de votre site inclut un dépôt de contrôle de code source dont vous n’avez pas besoin pour les opérations quotidiennes.

Comment puis-je vider les journaux du cache local après une opération de gestion de site ?

Pour vider les journaux du cache local, arrêtez et redémarrez l’application. Cette action efface le cache précédent.

Pourquoi App Service affiche-t-il des fichiers précédemment déployés après un redémarrage lorsque le cache local est activé ?

Si des fichiers précédemment déployés réapparaissent après un redémarrage, vérifiez la présence du paramètre d'application WEBSITE_DISABLE_SCM_SEPARATION=true. L'ajout de ce paramètre entraîne l'écriture des déploiements via Kudu sur la machine virtuelle locale au lieu du stockage persistant. Pour éviter cette situation, suivez les meilleures pratiques mentionnées précédemment et effectuez des déploiements sur un emplacement intermédiaire qui n’a pas de cache local activé.