Exigences : En avoir un dans le .NET FrameworkOutputCacheAttributeCette fonctionnalité (qui sert à marquer la méthode de fonctionnement de mise en cache de sa sortie) stocke en mémoire des données fréquemment consultées et rarement changeantes, et produit directement le contenu de réponse, ce qui peut améliorer la performance de la concurrence du site web et réduire la pression sur le serveur et la base de données. Cette fonctionnalité n’a été ajoutée que dans .NET 7.
ASP.NET Middleware de cache de sortie dans Core :La connexion hyperlientérée est visible.
Le principe de la mise en cache de sortie : chaque requête détermine d’abord si elle existe dans le cache, si elle n’existe pas, écrit le contenu de la réponse dans le cache puis produit la réponse ; si le cache existe, la réponse de sortie des données est directement obtenue à partir du cache. via le cache de sortieRéduire les requêtes dans la base de données, diminuer certaines opérations logiques et récupérer directement depuis le cache améliore à la fois la concurrence et la réactivité。
Comme il n’y a pas de fonctionnalité OutputCacheAttribute dans .NET 6, nous pouvons implémenter nous-mêmes un cache de sortie simple.
En l’absence de cache de sortie, les résultats du test de résistance sont les suivants (La base de données du projet est connectée au serveur de Hong Kong):
Résultats du test de résistance : seulement 10 concurrents par seconde autorisés (transfert de base de données lent).
Pour essayer d’ajouter un cache de sortie, commencez par créer une nouvelle fonctionnalité OutputCacheAttribute, le code est le suivant :
Créez un nouveau middleware OutputCacheMiddleware pour bloquer la requête, et le code est le suivant :
Ajoutez le middleware UseOutputCacheExtensions à Program.cs avec le code suivant :
Enfin, ajoutez la fonctionnalité à la méthode contrôleur avec le code suivant :
Encore une fois, avec les tests de pression, cela peut être réaliséPlus de 10 000 concurrents par seconde, comme montré dans la figure ci-dessous :
cassowary.exe run -u http://localhost:5222/zh-cn -c 50 -n 100000
(Fin)
|