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

Une brève analyse de la technologie de mise en cache des pages asp.net

怪我咯
怪我咯original
2017-03-31 11:55:581262parcourir

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

<.tbody>Indique que la mise en cache de sortie est désactivée pour cette page
Emplacement
Location
含义
Any
默认值。意味着页面的输出可以缓存在客户端浏览器,缓存在任何“下游”的客户端(如代理服务器),或缓存在Web服务器本身
Client
指明输出缓存只能存储在发出请求的客户端(即浏览器)的本地缓存中
Downstream
指明输出缓存能存储在任何支持HTTP1.1缓存的设备(如代理服务器)中
Server
指明输出缓存将存储在Web服务器上
None
指明该页面禁用输出缓存
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


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.

tr>
Valeur prioritaire
优先级值
含义
High
设为此优先级的缓存项是最不可能在内存不足时被删除的
AboveNormal
设为此优先级的缓存项比优先级为Normal或以下的缓存项更优先保留
Normal
设为此优先级的缓存项比优先级为BelowNormal和Low的缓存项更优先保留
BelowNormal
这是倒数第二级的优先级;设为此优先级的缓存项只比优先级设为Low的缓存项更优先保留
Low
设为此优先级的缓存项是最有可能在内存不足时被删除的
Default
缓存项的优先级的默认值是Normal
NotRemovable
当缓存项设为此优先级时,是在告诉ASP.NET即使是内存不足,也不要从缓存中删除它
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
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

DateTime dt = new DateTime(DateTime.Now.Year,12, 31);
Cache.Add("MembersDataSet",dsMembers,null,
dt,TimeSpan.Zero,
CacheItemPriority. Normal,null);
Le premier paramètre est la clé qui référence le cache objet, et le deuxième paramètre est l’objet à mettre en cache. Le troisième paramètre est nul (indiquant aucune corrélation).
Les quatrième et cinquième paramètres sont le délai d'expiration absolu et le délai d'expiration flexible. Ici, on précise que le cache doit expirer le dernier jour de l'année en cours (dt). Nous souhaitons spécifier un délai d'expiration non flexible, utilisez donc TimeSpan.Zero pour le cinquième paramètre. Le sixième paramètre utilise une valeur de l'énumération System.Web.Caching.CacheItemPriority pour définir la priorité sur Normal.

Spécifiez un délai d'expiration flexible de 5 minutes, aucun délai d'expiration absolu n'est spécifié
Cache.Add("MembersDataSet",dsMembers,null,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

Ajouter une corrélation. Dans cet exemple, le délai d'expiration dépend également de la modification d'un fichier, le fichier test.xml :
CacheDependency dep = new CacheDependency (@"C:/test.xml");
Cache.Add(" MembersDataSet ",dsMembers,dep,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

Le délai d'expiration dépend de la modification d'un autre élément du cache :
String[] dependencyKeys = new String[1];
dependencyKeys[0] = "MembersChanged";
CacheDependency dependency = new CacheDependency(null, dependencyKeys);Cache.Add("MembersDataSet ",dsMembers ,dependency,
DateTime.MaxValue,TimeSpan.Zero,
CacheItemPriority.Normal,null);

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn