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"%> |
Points clés à retenir
Surmonte les limitations d'InProc : Remplace la mise en cache par défaut en cours de traitement pour contourner les contraintes de mémoire des rôles Web Azure individuels.
Garantit une haute disponibilité : Empêche la perte de données lors des cycles de maintenance Azure grâce à l'utilisation d'un stockage distribué avec réplication intégrée.
Permet une mise à l'échelle sans état : Élimine les copies de cache redondantes entre les instances à charge équilibrée, permettant aux rôles Web de rester totalement sans état.
Supprime les goulots d'étranglement de la base de données : Réduit considérablement la charge du serveur en traitant les requêtes de pages fréquentes et volumineuses directement depuis un système de cache haute performance.
La mise en cache des sorties ASP.NET est une fonctionnalité très utile, notamment lorsque la fréquence d'accès à une page est supérieure à sa fréquence de modification et qu'elle est servie depuis le cache. Cela améliore les performances de l'application en évitant les réexécutions de pages et en réduisant les requêtes coûteuses à la base de données, en particulier lorsque la page implique de nombreuses opérations d'entrée/sortie complexes. Ceci facilite une architecture sans état, condition essentielle à la mise à l'échelle horizontale sur Azure, car la charge mémoire est déportée du serveur d'applications vers un niveau de cache dédié. En mettant en cache ces réponses, vous éliminez le goulot d'étranglement lié à la mise à l'échelle de la base de données qui survient généralement lors du traitement de millions de requêtes impliquant des opérations d'E/S importantes.
Défis liés à la mise en cache des sorties en cours de traitement (InProc) dans les rôles Web 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.
| Contrainte | En cours de traitement (par défaut) | NCache (Distribué) |
|---|---|---|
| Capacité de stockage | Limité à la RAM du rôle Web | Mémoire de cluster évolutive |
| Dépendance d'instance | Copies redondantes par rôle Web | Magasin partagé unifié |
| Impact du recyclage | Données perdues lors de la maintenance des rôles | Persistant par réplication |
| Architecture | Engendrant des instances « collantes » | Permet d'activer les rôles Web sans état |
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 : S'enregistrer 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 les performances, l'évolutivité et la fiabilité des applications ASP.NET. En utilisant NCacheLes applications déployées sur Azure peuvent gérer des millions de requêtes par seconde tout en maintenant une latence inférieure à la milliseconde, éliminant ainsi la base de données comme point de défaillance unique pour la diffusion de contenu à volume élevé.
Questions fréquentes
Q : Pourquoi la mise en cache de la sortie ASP.NET par défaut est-elle inefficace dans un environnement Azure à charge équilibrée ?
A : Par défaut, le cache de sortie est stocké en mémoire interne (InProc). Dans une configuration à charge équilibrée, chaque instance de rôle Web gère son propre cache isolé, ce qui entraîne une consommation de mémoire redondante et des données incohérentes entre les différentes instances de serveur.
Q: Comment NCache Prévenir la perte de cache lors de la maintenance des rôles Web Azure ?
R : Depuis NCache Fonctionnant comme un service distribué externe au processus du rôle Web, il reste opérationnel même lors du recyclage des instances Azure pour l'application de correctifs. Sa réplication de données intégrée garantit la haute disponibilité des pages web affichées sur l'ensemble du cluster.
Q : Puis-je utiliser NCache Comment mettre en cache la sortie sans réécrire mon application ASP.NET ?
R: Oui. NCache Utilise le modèle de fournisseur d'extensibilité ASP.NET 4.0. L'intégration est entièrement gérée via les paramètres web.config en enregistrant le NCache Fournisseur de cache de sortie, ne nécessitant aucune modification de la logique de votre page ou de votre code C#.
Q: Est-ce que NCache Est-il possible de mettre en cache des parties spécifiques d'une page plutôt que la totalité du contenu ?
Un: oui, NCache La mise en cache par fragments est prise en charge. Cela permet de mettre en cache sélectivement les parties statiques d'une page tout en autorisant le rendu des sections dynamiques lors de l'exécution, optimisant ainsi les performances des pages contenant différents types de contenu.






