Microsoft Cache de sortie ASP.NET fournit des fonctionnalités pour mettre en cache le contenu rendu des pages ASP.NET ou des contrôles utilisateur pendant une durée spécifiée. Cela permet à votre application ASP.NET de répondre à toutes les demandes ultérieures à partir du cache au lieu de restituer et de réexécuter une page.
Vous ajoutez le <% @OutputCache %> directive sur la page pour utiliser le cache de sortie ASP.NET.
1 2 |
<%@Page … %> <%@OutputCacheDuration="duration"VaryByParam="paramList"%> |
La mise en cache de sortie ASP.NET est une fonctionnalité très utile, en particulier dans les situations où une page est consultée plus fréquemment qu'elle ne change et que vous la servez à partir du cache. Cela améliore les performances de l'application en évitant les réexécutions de page et également en réduisant vos coûteux déplacements de base de données, en particulier lorsque la page implique de nombreuses opérations de base de données lourdes. Cela améliore également l'évolutivité de l'application car la base de données devient généralement un goulot d'étranglement d'évolutivité lorsqu'il existe des millions de pages et de requêtes impliquant des opérations de base de données.
Problèmes avec le cache de sortie ASP.NET dans l'environnement Microsoft Azure
Lorsque vous utilisez le cache de sortie dans Microsoft Azure, la sortie de page est stockée en tant que InProc dans votre rôle Web Microsoft Azure par défaut. Le premier problème avec cela est qu'il vous limite à la mémoire disponible sur votre instance de rôle Web et cela peut créer un problème de mémoire insuffisante lorsque vous mettez en cache une grande quantité de données de sortie de page. Un autre problème est que votre application s'exécute sur plusieurs instances de rôle Web Microsoft Azure à charge équilibrée. La requête suivante peut être envoyée à une autre instance de rôle Web, qui crée également une nouvelle copie des données du cache de sortie ASP.NET dans cette instance. Ces copies redondantes des sorties de page dans chaque instance de rôle Web consomment beaucoup de mémoire supplémentaire.
Les instances de rôle Web Microsoft Azure sont également recyclées assez fréquemment pour la maintenance et l'application de correctifs. Lorsque cela se produit, toutes les sorties de page sont perdues et vous devrez réexécuter toutes les pages pour remplir à nouveau votre cache de sortie de page, ce qui a un impact négatif sur les performances de votre application Azure.
Comment résoudre les problèmes de mise en cache de sortie dans Microsoft Azure ?
Une façon de résoudre tous ces problèmes dans Microsoft Azure consiste à utiliser un cache distribué, qui s'exécute hors processus et constitue un magasin commun pour toutes les instances de rôle Web Microsoft Azure. ASP.NET 4.0 a introduit un point d'extensibilité qui aide les développeurs à utiliser n'importe quel cache distribué de leur choix comme magasin de cache de sortie ASP.NET.
Le cache distribué est partagé par tous les rôles Web Microsoft Azure pour les sorties de page, de sorte qu'aucune copie redondante n'est effectuée dans les instances de rôle Web individuelles. Les rôles Web Microsoft Azure deviennent purement sans état afin que les données ne soient jamais perdues lorsque les rôles Web sont recyclés. Vous pouvez mettre en cache une énorme quantité de données dans le cache distribué en regroupant les ressources de mémoire de tous les serveurs de cache. De plus, le cache distribué réduit la charge sur votre base de données, car vous n'avez pas à passer par des exécutions de page impliquant des appels de base de données dans chaque instance de rôle Web Microsoft Azure séparément.
NCache pour Azure est un cache distribué en mémoire pour .NET applications déployées dans le cloud Microsoft Azure. NCache for Azure a implémenté le fournisseur de cache de sortie ASP.NET que vous pouvez utiliser pour stocker la sortie de page ASP.NET et résoudre tous les problèmes mentionnés ci-dessus. De plus, le déploiement NCache en tant que Service de mise en cache Azure assure la fiabilité des données avec réplication et améliore l'évolutivité des applications.
Comment l'utiliser ? NCache pour le fournisseur de cache de sortie Azure ASP.NET
Vous pouvez utiliser NCache pour Azure pour la mise en cache de sortie dans ASP.NET comme suit sans aucun changement de code dans votre application Microsoft Azure.
Étape 1: Ajouter une référence de NCache pour l'assembly de fournisseur de cache de sortie Azure.
Fichier : web.config
1 2 3 4 5 6 |
<compilation debug="true " targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache,Version=x.x.x.x,Culture=neutral"> </add></assemblies> </compilation> |
Étape 2: Inscription NCache pour le fournisseur de cache de sortie Azure sousconfiguration> section et fournissez les paramètres de cache.
Fichier : web.config
1 2 3 4 5 6 7 8 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> |
Étape 3: Ajoutez la directive ASP.NET Output Cache sur la page que vous souhaitez mettre en cache.
1 |
<%@OutputCacheVaryByParam="ProductCategory"Duration="300"%> |
Documentation: Utilisation de la mise en cache de sortie ASP.NET avec NCache
NCache pour les fonctionnalités du cache de sortie Azure ASP.NET
NCache for Azure fournit un riche ensemble de fonctionnalités pour la mise en cache et la gestion de la mise en cache de sortie de Microsoft Azure. Voici une liste d'entre eux:
- Spécifiez la durée pour la sortie de page : NCache pour Azure vous permet de spécifier une durée pendant laquelle vous souhaitez mettre en cache la sortie de la page ASP.NET.
- Mettez en cache différentes versions d'une page : NCache pour Azure vous permet de mettre en cache différentes versions de page en fonction des différentes directives de cache de sortie ASP.NET telles que VaryByParam,VaryByCustom, VaryByControl. Une autre version de la sortie de page est stockée dans le cache distribué si un paramètre différent est reçu pour une demande de page.
- Mettez en cache différentes parties d'une page : Vous pouvez également spécifier uniquement des parties de la page au lieu de mettre en cache la page entière. C'est pour les situations où vous ne cachez que la partie statique de la page et laissez la partie dynamique qui est rendue au moment de l'exécution.
- Implémentez des crochets personnalisés pour le cache de sortie ASP.NET : NCache for Azure vous permet d'implémenter et d'enregistrer vos crochets personnalisés (interface) pour la sortie de page. Il s'agit d'attacher des attributs étendus aux sorties de votre page, tels que NCache pour les dépendances de base de données Azure, les balises, les groupes, etc.
Conclusion
Comme vous l'avez vu, le cache distribué vous permet de mettre en cache les sorties de page ASP.NET, ce qui résout les problèmes de votre application avec plusieurs rôles Web Azure à charge équilibrée. NCache est un fournisseur de cache de sortie Azure ASP.NET qui contribue à améliorer l'évolutivité et la fiabilité des performances des applications ASP.NET.