Partager via


Vue d'ensemble de la mise en cache ASP.NET

Mise à jour : novembre 2007

Une application peut souvent augmenter ses performances en stockant en mémoire les données fréquemment sollicitées et dont la création exige un temps de traitement significatif. Par exemple, si votre application traite des volumes de données importants à l'aide d'une logique complexe, puis retourne les données sous forme d'un rapport souvent demandé par les utilisateurs, il vaudra mieux éviter de recréer le rapport à chaque demande. De même, si votre application comprend une page qui traite des données complexes, mais qui n'est que rarement mise à jour, il n'est pas judicieux que le serveur recrée cette page à chaque demande.

Pour vous aider à améliorer les performances de l'application dans ce type de situation, ASP.NET propose une mise en cache qui utilise deux mécanismes essentiels de mise en cache. Le premier est la mise en cache d'application, qui vous permet de mettre en cache les données que vous générez, par exemple un DataSet ou un objet métier de rapport personnalisé. Le second est la mise en cache de sortie de page, qui enregistre la sortie du traitement de la page et la réutilise plutôt que de traiter à nouveau la page lorsqu'un utilisateur la redemande.

Cache d'application

Le cache d'application vous permet de stocker par programme des données arbitraires en mémoire à l'aide de paires clé/valeur. Le cache d'application s'utilise de façon comparable à l'état de l'application. Toutefois, les données du cache d'application sont volatiles, contrairement à celles de l'état de l'application, ce qui signifie qu'elles ne sont pas stockées en mémoire pour la durée de vie de l'application. L'avantage d'utiliser le cache d'application est qu'ASP.NET gère le cache et supprime des éléments lorsqu'ils expirent ou sont invalidés, ou lorsque la mémoire commence à manquer. Vous pouvez configurer également le cache d'application pour informer votre application de la suppression d'un élément. Pour plus d'informations, consultez Mise en cache de données d'application.

La procédure d'utilisation du cache d'application consiste à déterminer si un élément existe dans le cache chaque fois que vous cherchez à y accéder, et si tel est le cas, à utiliser cet élément. Si l'élément n'existe pas, vous pouvez le recréer puis le replacer dans le cache. Cette procédure vous garantit de toujours disposer dans le cache des données les plus récentes.

Pour plus d'informations, consultez Comment : récupérer des valeurs d'éléments mis en cache.

Cache de sortie de page

Le cache de sortie de page stocke en mémoire le contenu d'une page ASP.NET traitée. Cela permet à ASP.NET d'envoyer une réponse de page à un client sans refaire tout le cycle de traitement de la page. La mise en cache de sortie de page est particulièrement utile pour les pages qui changent peu souvent, mais dont la création nécessite un traitement important. Par exemple, si vous créez une page Web à fort trafic pour afficher des données rarement mises à jour, le cache de sortie de page peut considérablement augmenter les performances de cette page. La mise en cache de page peut être configurée individuellement pour chaque page. Vous pouvez aussi créer des profils de cache dans le fichier Web.config, ce qui vous permet de définir les paramètres de mise en cache en une seule fois, puis d'utiliser ces paramètres pour plusieurs pages.

La mise en cache de sortie de page fournit deux modèles de mise en cache de page : la mise en cache de page entière ou partielle. La mise en cache de page entière permet de faire persister en mémoire tout le contenu d'une page et de l'utiliser pour répondre aux demandes des clients. La mise en cache de page partielle permet de mettre en cache des extraits d'une page tout en laissant dynamiques d'autres parties de la page. Pour plus d'informations, consultez Mise en cache de pages ASP.NET.

La mise en cache de page partielle peut fonctionner de deux manières : la mise en cache de contrôle et la substitution post-cache. La mise en cache de contrôle, parfois aussi appelée mise en cache de fragment, permet de mettre en cache des extraits de la sortie de page en incluant les informations dans un contrôle utilisateur et en marquant ensuite ce contrôle utilisateur comme pouvant être mis en cache. Cela permet de mettre en cache du contenu spécifique d'une page, tandis que la page entière n'est pas mise en cache et est donc recréée à chaque fois. Par exemple, si vous créez une page qui affiche du contenu en grande partie dynamique, par exemple des informations boursières, mais qui contient également des sections statiques, par exemple des résumés hebdomadaires, vous pouvez placer ces sections statiques dans des contrôles utilisateur et autoriser leur mise en cache.

La substitution post-cache fonctionne de façon inverse. La page est mise en cache dans son ensemble, mais les fragments au sein de la page restent dynamiques. Par exemple, si vous créez une page qui reste statique pour des périodes définies, vous pouvez décider de mettre en cache la page entière. Si vous avez ajouté un contrôle Label à la page qui a affiché le nom de l'utilisateur, Label restera le même à chaque actualisation de page et pour chaque utilisateur, montrant le nom de l'utilisateur qui a demandé cette page avant qu'elle ait été mise en cache. Toutefois, la substitution post-cache vous permet de configurer la page à mettre en cache, tout en marquant certaines sections de la page comme ne pouvant pas être mises en cache. Vous pourrez alors ajouter vos contrôles Label à une section ne pouvant pas être mise en cache et ils seront créés dynamiquement pour chaque utilisateur et à chaque demande de page. Pour plus d'informations, consultez Mise en cache de parties d'une page ASP.NET.

Mise en cache de pages en fonction des paramètres de demande

Outre la mise en cache d'une version unique d'une page, la mise en cache d'une sortie de page ASP.NET permet aussi de créer plusieurs versions de cette page, qui varient pour répondre à des paramètres de demande différents. Pour plus d'informations, consultez Mise en cache de plusieurs versions d'une page.

Suppression automatique de données

ASP.NET peut supprimer des données du cache pour l'une des raisons suivantes :

  • Parce que la mémoire sur le serveur commence à manquer (technique appelée nettoyage).

  • Parce que l'élément présent dans le cache a expiré.

  • Parce que la dépendance de l'élément change.

Pour vous aider à gérer les éléments mis en cache, ASP.NET peut informer votre application lorsque ceux-ci sont supprimés du cache.

Nettoyage

Le nettoyage est le processus consistant à supprimer des éléments du cache lorsque la mémoire se raréfie. Les éléments sont supprimés lorsqu'ils n'ont pas été demandés depuis un certain temps ou lorsqu'ils ont été marqués comme étant à faible priorité au moment de leur placement dans le cache. ASP.NET utilise l'objet CacheItemPriority pour déterminer les éléments à nettoyer en premier. Pour plus d'informations, consultez Comment : ajouter des éléments au cache.

Expiration

En plus du nettoyage, ASP.NET supprime automatiquement les éléments du cache lorsqu'ils expirent. Lorsque vous ajoutez un élément au cache, vous pouvez définir sa date d'expiration comme le décrit le tableau suivant.

Type d'expiration

Description

Expiration décalée

Spécifie le temps au bout duquel un élément expire après avoir été demandé pour la dernière fois. Par exemple, vous pouvez régler le temps d'expiration d'un élément sur 20 minutes après avoir été demandé pour la dernière fois dans le cache.

Expiration absolue

Spécifie qu'un élément expire à un moment défini, indépendamment du nombre de fois où il a été demandé. Par exemple, vous pouvez régler le temps d'expiration d'un élément sur 18h00 heures ou au bout de quatre heures.

Dépendances

Vous pouvez configurer la durée de vie d'un élément du cache de façon à ce qu'elle dépende d'autres éléments de l'application, par exemple de fichiers ou de bases de données. Lorsque l'élément dont dépend l'élément en cache est modifié, ASP.NET supprime l'élément du cache. Par exemple, si votre site Web affiche un rapport créé par l'application à partir d'un fichier XML, vous pouvez placer ce rapport dans le cache et le configurer de façon à ce qu'il soit associé à une dépendance vis-à-vis du fichier XML. Lorsque le fichier XML est modifié, ASP.NET supprime le rapport du cache. Lorsque votre code demande le rapport, il commence par regarder si celui-ci figure dans le cache. S'il ne l'y trouve pas, il peut le recréer. Une version à jour du rapport est ainsi toujours disponible.

La mise en cache ASP.NET prend en charge les dépendances décrites dans le tableau suivant.

Dépendance

Description

Dépendance de clé

Les éléments du cache d'application sont stockés dans des paires clé/valeur. La dépendance de clé permet à un élément d'être dépendant de la clé d'un autre élément du cache d'application. Lorsque l'élément d'origine est supprimé, l'élément dépendant de la clé l'est également. Par exemple, vous pouvez ajouter un élément de cache nommé ReportsValid, puis mettre en cache plusieurs rapports dépendants de la clé ReportsValid. Lorsque l'élément ReportsValid est supprimé, tous les rapports dépendants mis en cache sont également supprimés du cache.

Dépendance de fichier

Un élément du cache est dépendant d'un fichier externe. Si le fichier est modifié ou supprimé, l'élément en cache est, lui aussi, supprimé.

Dépendance SQL

Un élément du cache est dépendant des modifications apportées à une table dans une base de données Microsoft SQL Server 2005, SQL Server 2000 ou SQL Server 7.0. Pour SQL Server 2005, un élément peut être dépendant d'une ligne d'une table. Pour plus d'informations, consultez Mise en cache dans ASP.NET avec la classe SqlCacheDependency.

Dépendance globale

Un élément du cache est dépendant de plusieurs éléments via l'utilisation de la classe AggregateCacheDependency. Si l'une des dépendances est modifiée, l'élément est supprimé du cache.

Dépendance personnalisée

Un élément du cache est configuré avec une dépendance que vous créez dans votre propre code. Par exemple, vous pouvez créer une dépendance de cache de service Web personnalisée qui supprime des données du cache lorsqu'un appel à un service Web a pour résultat une valeur donnée.

Notification de suppression d'un élément du cache d'application

Vous pouvez être informé de la suppression d'un élément du cache d'application. Par exemple, si vous avez un élément dont la création prend un temps de traitement considérable, vous pouvez être averti lorsqu'il est supprimé du cache afin de pouvoir le remplacer immédiatement. Ainsi, la prochaine fois que l'élément sera demandé, l'utilisateur n'aura pas à attendre qu'il soit traité. Pour plus d'informations, consultez Comment : avertir une application lorsqu'un élément est supprimé du cache.

Voir aussi

Tâches

Comment : mettre en cache la sortie de page avec des dépendances de fichier

Concepts

Mise en cache de pages ASP.NET

Mise en cache de données d'application

Mise en cache dans ASP.NET avec la classe SqlCacheDependency