where Durée et VaryByP"/> where Durée et VaryByP">
Maison > Article > développement back-end > Une brève analyse de la technologie de mise en cache des pages asp.net
J'ai longtemps voulu écrire davantage sur la technologie
Premièrement, c'est pour que je puisse être plus informéRequête, bien sûr, tout le monde sera bientôt mis à jour. Ha
Plus de potins
J'ai juste le temps aujourd'hui de tout reconstituer
PageCache
Utilisez la directive OutputCache
<%@ OutputCache Duration="3600"
Location="Any"
VaryByCustom="browser"
VaryByParam="RequestID" %>
Les attributs Duration et VaryByParam sont obligatoires
Location contrôle l'emplacement du cache des pages
Emplacement
|
Signification | ||||||||||||
Tous td> | La valeur par défaut. Signifie que la sortie de la page peut être mise en cache dans le navigateur client, mise en cache dans n'importe quel client "en aval" (tel qu'un serveur proxy) ou mise en cache dans le serveur Web lui-même | ||||||||||||
Client | Spécifie que le cache de sortie ne peut être stocké que dans le cache local du client demandeur (c'est-à-dire le navigateur) | ||||||||||||
En aval | Spécifie que le cache de sortie peut être stocké sur n'importe quel appareil prenant en charge la mise en cache HTTP1.1 (comme un serveur proxy) | ||||||||||||
Serveur | Spécifie que le cache de sortie sera stocké sur le serveur Web | Aucun | Indique que la mise en cache de sortie est désactivée pour cette page
La durée nous permet de contrôler la durée de vie de la page dans le cache (en secondes)
VaryByParam nous permet de mettre en cache différentes versions de la page. Dans l'exemple ci-dessus, VaryByParam est défini sur RequestID, donc ASP.NET utilise différentes valeurs du paramètre RequestID, qui sont soit transmises dans la requête HTTP GET chaîne , ou Il est passé dans les paramètres de HTTP POST. Vous pouvez permettre à l'application de distinguer les différents utilisateurs en vérifiant la valeur du paramètre RequestID ; en plaçant VaryByParam="RequestID" dans la directive OutputCache de la page, vous pouvez laisser ASP.NET mettre en cache différentes versions de la page pour chaque utilisateur.
Si vous ne souhaitez pas mettre en cache les versions indépendantes de la page en fonction de la valeur du paramètre, définissez simplement VaryByParam sur none.
Vous pouvez également demander à ASP.NET de mettre en cache une version de la page pour chaque combinaison de paramètres tableau possible. Pour ce faire, définissez VaryByParam sur *.
Les attributs VaryByHeader et VaryByCustom sont similaires à VaryByParam dans le sens où ils permettent de spécifier quand une nouvelle version en cache d'une page doit être créée.
VaryByHeader nous permet de mettre en cache les versions non dirigées d'une page sur la base d'une liste d'en-têtes HTTP séparés par des points-virgules.
VaryByCustom, lorsqu'il est défini sur navigateur, nous permet de mettre en cache différentes versions en fonction du nom du navigateur et des informations sur la version majeure. Nous pouvons également lui attribuer le nom d'une méthode personnalisée pour implémenter notre propre logique et contrôler la version mise en cache.
Fragment cache
peut utiliser l'utilisateur control pour segmenter la page et écrire des instructions mises en cache dans le fichier ascx au lieu d'écrire des instructions mises en cache dans le fichier aspx, donc qu'ASP.NET ne peut mettre en cache que la sortie du fragment ascx. Généralement, si l’en-tête ou le pied de page est fondamentalement le même, il n’est pas nécessaire de recharger. Mais s'il y a des données qui changent dynamiquement, elles ne peuvent pas être mises en cache, car une fois mises en cache, le programme n'en créera pas d'instance pour mettre à jourl'affichage des données. Il ne peut donc qu'attendre l'expiration de la durée de vie. pour Cette situation ne convient pas à la mise en cache des fragments de page.
Remarque :
1. Notez que la mise en cache des fragments ne prend pas en charge la fonctionnalité de localisation ; le seul endroit légal pour mettre en cache les fragments de page est le serveur Web. En effet, la mise en cache des fragments est une nouvelle fonctionnalité dans ASP.NET, les navigateurs et les serveurs proxy ne la prennent donc pas en charge.
2. Le cache de fragments a une autre fonctionnalité que l'on ne trouve pas dans le cache de pages - VaryByControl. L'attribut VaryByControl vous permet de spécifier une liste de chaînes délimitées par des points-virgules qui représentent les noms des contrôles utilisés dans un contrôle utilisateur ; ASP.NET générera une version mise en cache du widget utilisateur pour chaque combinaison différente de valeurs.
Data Cache
API de bas niveau est la classe Cache, qui se trouve dans l'espace de noms System.web.Caching dans ASP.NET, vous pouvez l'utiliser pour mettre en cache des données gourmandes en ressources. L'utilisation de la classe Cache est aussi simple que les objets Session et Application. Il n'y a qu'un seul objet Cache par application. Cela signifie que les données stockées dans le cache à l'aide de l'objet Cache sont des données au niveau de l'application. Pour rendre les choses encore plus simples, la propriété Cache de la classe Page rend l'instance d'objet Cache de l'application disponible dans le code.
Les données mises en cache via l'objet Cache sont stockées dans la mémoire de l'application. Cela signifie que la durée de vie de ces données ne dépassera pas le redémarrage de l'application (en fait, c'est la même chose que les données stockées dans les objets Application et Session, à moins d'utiliser le mode session StateService ou SQL State pour stocker les données de session).
L'utilisation et la syntaxe spécifiques sont les mêmes que celles de Session et Application. Lors de la reconversion, vous devez faire attention à la conversion de type forcée du type correspondant.
Ce n'est pas le seul moyen d'ajouter des éléments de cache au cache ASP.NET. L'objet Cache possède deux méthodes, la méthode Insert() et la méthode Add(), qui sont plus flexibles. Leur utilisation est similaire, mais légèrement différente : la méthode
Insert() est utilisée pour écraser les entrées de cache existantes dans le cache ASP.NET.
La méthode Add() est uniquement utilisée pour ajouter de nouveaux éléments de cache au cache ASP.NET (elle échouera si vous l'utilisez pour écraser des éléments de cache existants).
Chaque méthode a 7 paramètres, et les paramètres des deux méthodes sont les mêmes.
Lors de la mise en cache d'un élément, vous pouvez spécifier sa pertinence, en indiquant à ASP.NET que l'élément mis en cache restera dans le cache jusqu'à ce qu'un certain événement se produise.
相关性值 |
含义 |
CacheDependency |
允许指定一个文件或缓存键。如果文件发生变化,对象就被删除。如果缓存键发生变化,对象也被删除。 |
DateTime |
这是一个DataTime值,指明缓存数据过期的时间(绝对过期时间) |
TimeSpan |
这是一个时间间隔,指明缓存数据在上一次访问后可以在缓存中保留多长时间(弹性过期时间) |
Utilisez CacheItemPriority pour spécifier la priorité des données mises en cache afin que les données de faible priorité puissent être supprimées lorsque le cache se remplit.
Valeur prioritaire
|
Signification | ||||||||||||||||
Élevé |
Les éléments du cache définis sur cette priorité sont les moins susceptibles d'être supprimés lorsque la mémoire est faible |
||||||||||||||||
AboveNormal |
Les éléments du cache définis sur cette priorité ont la priorité sur les éléments du cache ayant une priorité Normale ou inférieure |
||||||||||||||||
Normale |
Les éléments de cache définis sur cette priorité seront conservés plus tôt que les éléments de cache ayant des priorités inférieures à la normale et faibles |
||||||||||||||||
inférieurs à la normale |
Il s'agit de l'avant-dernier niveau de priorité ; les éléments du cache définis sur cette priorité ne sont conservés qu'avant les éléments du cache définis sur une priorité faible | tr>||||||||||||||||
Faible | Les éléments du cache définis sur cette priorité sont ceux qui sont les plus susceptibles d'être supprimés lorsque la mémoire est faible |
Par défaut |
La valeur par défaut la valeur de la priorité de l'élément de cache est Normal |
||||||||||||||
NotRemovable |
Lorsqu'un élément de cache est défini sur cette priorité, vous en informez ASP. NET de ne pas le supprimer du cache même si la mémoire est insuffisante |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!