Asp.net prend en charge trois types de cache.
Je souhaite rédiger un bref aperçu technique, mais c'est peut-être trop. Le but de l'aperçu technique est de décrire les points techniques de la manière la plus rapide et la plus simple, ce qui est aussi, je l'espère, le moyen le plus efficace de diffuser les connaissances.
1. Cache de page/contrôle
2. Cache au niveau de l'application
3. Cache client du navigateur
Du point de vue de la mise en œuvre, le cache de page/contrôle et le cache au niveau de l'application sont stockés dans la mémoire du serveur. À mesure que la mémoire devient restreinte, ces contenus peuvent être supprimés à l'avance avant qu'ils ne deviennent invalides. (Les caractéristiques du cache déterminent que ces contenus peuvent être supprimés en toute confiance). Le cache du navigateur client est stocké dans le cache du navigateur client. Par exemple, le dossier temporaire d'IE fonctionne comme un cache. Chaque fois qu'un utilisateur demande une page, le navigateur recherchera d'abord dans le cache s'il existe un contenu de cache qui répond aux exigences et n'a pas expiré. Si tel est le cas, il le lira directement à partir du cache et ignorera la transmission réseau.
Ce qui suit montre la méthode d'écriture spécifique dans Asp.net :
1. Le cache de page/contrôle peut être déclaré dans le fichier aspx, ascx, ou il peut être déclaré dans le code derrière.
<%@ OutputCache Duration="#ofseconds"
Location="Tout | Client | En aval | Serveur | Aucun |
ServerAndClient "
Shared="True | False"
VaryByControl="nom de contrôle"
VaryByCustom="navigateur | chaîne personnalisée"
VaryByHeader="en-têtes"
VaryByParam ="nom du paramètre"
CacheProfile="nom du profil de cache | ''"
NoStore="true | false"
SqlDependency="paire de noms de base de données/table | CommandNotification"
%>
Les principaux paramètres sont :
Durée : durée effective du cache, unité en secondes
Partagé : Il n'est valable que pour les contrôles Lorsqu'un contrôle peut être appliqué à plusieurs pages en même temps, plusieurs pages peuvent-elles partager ce cache sans que chaque page ne conserve son propre cache pour ce contrôle ?
VaryByControl : Le cache change avec l'ID du contrôle.
VaryByCustom : Le cache change avec une variable définie par l'utilisateur. La variable est spécifiée ici et doit être implémentée dans Global.ascx :
chaîne de remplacement publique GetVaryByCustomString (
contexte HttpContext,
chaîne personnalisée
)
. instruction Le paramètre personnalisé est la variable déclarée dans OutPutcache. Différents contenus du cache sont représentés en renvoyant différentes valeurs de chaîne pour différents paramètres personnalisés dans cette fonction.
VaryByHeader, VaryByParam et CacheProfile définissent également différentes versions de cache.
NoStore signifie que le contenu du cache ne peut pas être écrit sur des périphériques de stockage autres que la mémoire. Il s'agit d'une exigence pour le contenu avec une sécurité relativement élevée.
SqlDependency est lié à la base de données.
2. Le cache au niveau de l'application
ne peut être obtenu que dans le code sous-jacent, et sa caractéristique est qu'il peut implémenter n'importe quelle logique de cache dont il a besoin.
Peut être obtenu via Page.Cache, le nom de la classe est System.Web.Caching.Cache
3. Le cache du client du navigateur
ne peut être obtenu que dans codebehind et peut être spécifié via Response.Cache, qui est un objet HttpCachePolicy.
De plus : Vous pouvez spécifier un TimeSpan comme temps de cache, sans le convertir en secondes à chaque fois.
public TimeSpan (longs ticks);
public TimeSpan(int heures, int minutes, int secondes);
public TimeSpan (int jours, int heures, int minutes, int secondes)
;
, int millisecondes);
Si vous souhaitez que le cache conserve une heure, une minute et une seconde, vous pouvez utiliser directement
new TimeSpan(1,1,1)
au lieu de calculer d'abord
1 heure, 1 minute et 1 seconde = 3600. +60+1=3661 secondes, puis transfert. Entrez 3661 comme période de validité.
http://www.cnblogs.com/ThomasNet/archive/2006/11/26/573104.html