Meilleures pratiques de mise en cache dans ASP.Net

La mise en cache est une stratégie de gestion d'état souvent adoptée dans ASP.Net pour améliorer les performances de l'application en minimisant la consommation de ressources de votre système. S'il est utilisé correctement, il peut améliorer considérablement les performances de votre application en stockant la page wWb dans son intégralité ou partiellement, ou même en stockant les données de l'application à travers les requêtes HTTP. La mise en cache permet à la page Web d'être rendue plus rapidement et une utilisation appropriée de la mise en cache minimise ou réduit les accès à la base de données ou la consommation des ressources du serveur.

La mise en cache dans ASP.Net est des trois types suivants:

  1. mise en cache de sortie de page
  2. mise en cache des fragments de page
  3. mise en cache des données

Mise en cache de la sortie de page

Il s'agit d'une forme de mise en cache dans ASP.Net qui stocke une copie de votre page Web dans le cache mémoire afin que les demandes ultérieures pour la même page Web puissent être extraites directement du cache - la sortie mise en cache est envoyée à l'application. Cela améliore considérablement les performances de l'application. L'extrait de code suivant montre comment vous pouvez implémenter la mise en cache de sortie de page.

L'option VaryByParam vous aide à spécifier les variables dans la requête Http qui auraient besoin d'une nouvelle entrée de cache. Les autres options possibles incluent: VaryByHeader et VaryByCustom. Vous pouvez également spécifier l'emplacement et la durée dans la directive OutputCache - vous pouvez les utiliser pour spécifier respectivement l'emplacement du cache et la durée pendant laquelle la page Web doit être mise en cache.

Mise en cache des fragments de page

La mise en cache des fragments de page est une stratégie de mise en cache dans laquelle la page Web est partiellement mise en cache - seuls les fragments de la page Web sont mis en cache, et non la page Web entière. Vous pouvez utiliser la même syntaxe que la mise en cache de sortie de page. Toutefois, vous devez appliquer l'attribut OutputCache à un contrôle utilisateur au lieu de la page Web. La mise en cache de fragments est utile lorsque vous ne devez mettre en cache que des parties de votre page Web, généralement dans les situations où votre page Web contient un mélange de sections communes et dynamiques. À titre d'exemple, vous pouvez avoir une page Web qui contient un mélange d'éléments de menu et également certaines sections dynamiques qui doivent souvent être remplies et mises à jour à partir de la base de données.

Mise en cache des données

ASP.Net expose l'API de cache pour que vous puissiez stocker des données dans le cache pour une récupération ultérieure. La syntaxe de stockage des données dans le cache à l'aide de l'API Cache est donnée ci-dessous.

Cache["key"] = "value";

Vous pouvez également utiliser les méthodes Add ou Insert. Pour éloigner une entrée du cache, vous pouvez utiliser la méthode Remove () de la classe Cache. La méthode Insert () de la classe Cache vous permet de spécifier la dépendance du cache. La dépendance du cache est une stratégie qui garantit que lorsque les données du magasin de données (à partir de laquelle le cache a été rempli) changent, le cache sera alors immédiatement rempli à nouveau. Lorsque les données du magasin de données changent, le cache expirait, ce qui entraînerait un regarnissage du cache avec les dernières données. Vous pouvez en savoir plus à ce sujet dans cet article MSDN.

Les meilleures pratiques

Vous devez mettre en cache aussi souvent que possible et mettre correctement les données en cache dans chaque couche de votre application. Lorsque vous utilisez la mise en cache des données, vous devez mettre en œuvre une stratégie appropriée pour vous assurer que les données du cache sont synchronisées avec celles du magasin de données. Vous pouvez tirer parti des gestionnaires de cache distribués tels que Memcached afin que votre stratégie de mise en cache puisse également évoluer correctement et fournir des gains de performances considérables - vous pouvez utiliser Memcached pour stocker des données volumineuses. Vous devez vous assurer de ne mettre en cache que des données relativement obsolètes - il n'y a aucun intérêt à mettre en cache des données qui changeraient souvent avec le temps. En outre, les données qui ne seront probablement pas réutilisées ne doivent pas être stockées dans le cache. Vous ne devez pas sur-utiliser SqlDependency ou SqlCacheDependency.

Et maintenant, connaissons également les inconvénients de la mise en cache. L'objet de cache n'est disponible que pour le domaine d'application actuel. Donc, si vous souhaitez stocker des données dans le cache et les rendre accessibles sur une ferme Web, ce n'est pas une possibilité. Vous devez tirer parti du cache distribué comme la mise en cache Windows Server AppFabric ou d'autres infrastructures de mise en cache distribuée pour que les données du cache soient globalement accessibles dans une batterie de serveurs Web.

La mise en cache est un mécanisme puissant pour améliorer les performances de l'application en stockant des données relativement obsolètes dans la mémoire afin que celles-ci puissent être extraites de la mémoire cache à un moment ultérieur. J'en discuterai plus sur ce sujet avec des exemples de code réels dans mes prochains articles ici.