Mise en cache dans ASP.NET avec la classe SqlCacheDependency
Mise à jour : novembre 2007
ASP.NET vous permet d'utiliser la classe SqlCacheDependency pour créer une dépendance de l'élément du cache vis-à-vis d'une table ou d'une ligne de base de données. En cas de modification de la table ou d'une ligne spécifique, l'élément ayant une dépendance est invalidé et supprimé du cache. Vous pouvez définir une dépendance vis-à-vis d'une table dans Microsoft SQL Server 7.0, SQL Server 2000 et SQL Server 2005. Si vous utilisez SQL Server 2005, vous pouvez également définir une dépendance vis-à-vis d'un enregistrement spécifique.
La mise en cache avec dépendance SQL peut considérablement augmenter les performances de l'application dans certains cas de figure. Par exemple, imaginez que vous créiez une application d'e-commerce qui affiche des informations sur les produits issues d'une base de données. Sans mise en cache, votre application doit demander les données à la base de données chaque fois qu'un utilisateur souhaite consulter un produit. Vous pouvez mettre en cache les informations sur les produits pour une durée d'un jour, ce qui garantira des réponses rapides puisque les informations de produit seront déjà en mémoire. Toutefois, si les informations sur les produits changent, celles qui auront été mises en cache risquent ensuite d'être mal synchronisées avec les données valables pour la journée.
Grâce à la dépendance de cache SQL, vous pouvez mettre en cache vos informations sur les produits et créer une dépendance vis-à-vis d'une modification de table ou de ligne de base de données. Lorsque les données changent (et uniquement dans ce cas), les éléments en cache basés sur ces données sont invalidés et supprimés du cache. La prochaine fois vous demanderez cet élément au cache, s'il n'y figure pas, vous pourrez ré-ajouter au cache la version mise à jour et être sûr que vous disposez ainsi des données les plus récentes.
La dépendance de cache SQL existe également pour le cache de sortie de page. Par exemple, vous pouvez créer une page nommée ViewProduct.aspx, qui affiche des informations sur un produit particulier. Vous pouvez définir la stratégie de cache de cette page de manière à ce qu'il s'agisse d'une dépendance SQL, comme vous le feriez pour un élément ajouté manuellement au cache. La page sera alors stockée dans le cache jusqu'à ce que la table ou la ligne dont elle dépend ait changé. Lorsque les données auront changé, la page sera recréée et stockée à nouveau dans le cache de sortie.
Pour plus d'informations, consultez Vue d'ensemble de la mise en cache ASP.NET.
Fonctionnalités
La dépendance de cache d'ASP.NET SQL offre les fonctionnalités suivantes :
Vous pouvez utiliser la dépendance de cache SQL pour le cache d'application comme pour le cache de sortie de page.
Vous pouvez utiliser la dépendance de cache SQL avec SQL Server 7.0 et les versions ultérieures.
Vous pouvez utiliser la dépendance de cache SQL dans un jardin Web (plusieurs processeurs sur un serveur) ou une batterie de serveurs Web (plusieurs serveurs exécutant la même application).
Les opérations de base de données associées à une dépendance de cache SQL sont simples et n'entraînent donc pas de traitement coûteux sur le serveur.
Vous n'avez pas besoin de connaissances SQL étendues pour configurer la dépendance de cache SQL dans votre application ni dans SQL Server. ASP.NET comprend des outils servant à automatiser la configuration. Vous pouvez en outre utiliser la classe SqlCacheDependencyAdmin pour configurer la dépendance de cache SQL par programme.
Implémentation pour SQL Server 7.0 et SQL Server 2000
ASP.NET implémente un modèle d'interrogation pour la dépendance de cache avec SQL Server 7.0 et SQL Server 2000. Un thread au sein du processus ASP.NET appelle la base de données SQL Server au bout d'un intervalle de temps spécifié, afin de déterminer si les données ont changé. Si tel est le cas, les éléments de cache dépendants sont invalidés et supprimés du cache. Vous pouvez spécifier l'intervalle d'interrogation, de façon déclarative dans le fichier Web.config de votre application ou par programme à l'aide de la classe SqlCacheDependency.
La dépendance de cache SQL est limitée aux modifications des données au niveau de la table pour SQL Server 7.0 et SQL Server 2000. Vous pouvez configurer ASP.NET pour interroger la base de données afin de connaître les modifications d'une table, mais pas celles d'une ligne spécifique.
Activation de la mise en cache SQL
Pour pouvoir utiliser la dépendance de cache SQL dans SQL Server 7.0 et SQL Server 2000, vous devez en configurer la prise en charge dans SQL Server. ASP.NET fournit des utilitaires servant à configurer la mise en cache SQL sur SQL Server, notamment un outil nommé Aspnet_regsql.exe, ainsi que la classe SqlCacheDependencyAdmin. Pour plus d'informations sur l'activation de la dépendance de cache SQL avec SQL Server, consultez Comment : mettre en cache la sortie de page avec des dépendances de clé de cache.
Implémentation pour SQL Server 2005
SQL Server 2005 implémente pour la dépendance de cache un modèle différent de celui de SQL Server 7.0 et SQL Server 2000. Il n'est pas nécessaire de passer par des étapes de configuration spéciales pour activer la dépendance de cache SQL sur SQL Server 2005. En outre, SQL Server 2005 implémente un modèle de notification de modifications dans lequel les notifications sont envoyées à des serveurs d'applications abonnées, plutôt que de s'appuyer sur le modèle d'interrogation requis dans les versions antérieures de SQL Server.
La dépendance de cache de SQL Server 2005 est plus souple s'agissant des types de modifications qui reçoivent la notification. SQL Server 2005 surveille les modifications apportées aux résultats d'une commande SQL donnée. Si, dans la base de données, une modification de nature à modifier le jeu de résultats de cette commande se produit, la dépendance entraîne l'invalidation de l'élément mis en cache. Cela permet à SQL Server 2005 de fournir une notification au niveau de la ligne.
La requête utilisée pour tester les modifications nécessite certains ajustements. Vous devez fournir des noms de tables complets, comprenant notamment le nom du possesseur (par exemple, dbo.authors). En général, la notification de SQL 2005 prend en charge les requêtes Select et les procédures stockées, ainsi que les requêtes multiples et imbriquées, mais elle ne prend pas en charge les opérations globales telles que COUNT(*). Pour plus d'informations sur les requêtes prises ou non en charge et sur les règles de notification dans SQL Server 2005, consultez la rubrique « Creating a Query for Notification » dans la documentation en ligne de SQL.
Configuration de la mise en cache SQL dans une application ASP.NET
Une fois que vous avez configuré les dépendances de cache dans SQL Server 7.0 ou SQL Server 2000, ou que vous avez créé la dépendance de commande appropriée dans SQL Server 2005, vous pouvez configurer votre application de façon à ce qu'elle utilise la dépendance de cache SQL, comme vous configureriez toute autre dépendance de cache. Par exemple, vous pouvez créer un profil de cache dans le fichier Web.config, puis le référencer sur chacune des pages devant utiliser la dépendance de cache SQL. Vous pouvez aussi utiliser la dépendance de cache SQL en l'activant par programme à l'aide de la classe SqlCacheDependency. Pour plus d'informations, consultez Comment : mettre en cache la sortie de page avec des dépendances de clé de cache.
Voir aussi
Tâches
Comment : mettre en cache la sortie de page avec des dépendances de fichier