2010-05-17 5 views
1

je voudrais utiliser la mise en cache de sortie avec WCF Data Services et bien qu'il n'y a rien construit spécifiquement pour soutenir la mise en cache, il existe une méthode OnStartProcessingRequest qui me permet de brancher et régler l'cacheability du demande en utilisant les mécanismes ASP.NET normaux. Mais je crains que le processus de travail ne soit recyclé en raison d'une consommation excessive de mémoire si des réponses volumineuses sont mises en mémoire cache. Existe-t-il un moyen de spécifier une limite supérieure pour le cache de sortie ASP.NET de sorte que si cette limite est dépassée, les éléments dans le cache seront supprimés?contrôle ASP.NET utilisation de la mémoire cache de sortie

J'ai vu les paramètres de configuration caching mais j'ai l'impression dans la documentation que c'est pour la mise en cache explicite via l'objet Cache car il existe un outputCacheSettings distinct qui n'a aucun attribut lié à la mémoire.

Voici un extrait de code de Scott Hanselman's post qui montre comment je définis la cachabilité de la requête.

protected override void OnStartProcessingRequest(ProcessRequestArgs args) 
{ 
    base.OnStartProcessingRequest(args); 
    //Cache for a minute based on querystring 
    HttpContext context = HttpContext.Current; 
    HttpCachePolicy c = HttpContext.Current.Response.Cache; 
    c.SetCacheability(HttpCacheability.ServerAndPrivate); 
    c.SetExpires(HttpContext.Current.Timestamp.AddSeconds(60)); 
    c.VaryByHeaders["Accept"] = true; 
    c.VaryByHeaders["Accept-Charset"] = true; 
    c.VaryByHeaders["Accept-Encoding"] = true; 
    c.VaryByParams["*"] = true; 
} 

Répondre

1

Ahh! Je me sens stupide maintenant ... Il semble que je peux définir cette limite in IIS's configuration, ce qui est logique car je suppose que IIS fournit les services de mise en cache de sortie à ASP.NET en premier lieu.

Et en prime, il semble IIS a déjà fait défaut à certains paramètres raisonnables pour cela:

taille de la réponse maximale mises en cache (en octets) Spécifie la taille maximale de une réponse en cache pour les deux caches en mode utilisateur et en mode noyau. La valeur par défaut est 262144 octets. Ce champ est activé au niveau du serveur uniquement; il est en lecture seule à tous les autres niveaux .

Limite de taille du cache (en Mo) Configure la limite de taille des caches en mode utilisateur et en mode noyau . Vous pouvez taper une taille (en Mo) ou tapez 0. Si vous tapez 0, IIS utilise la moitié de la mémoire physique disponible ou la mémoire virtuelle , selon lequel moins. Ce champ est activé uniquement au niveau du serveur; il est en lecture seule à tous les autres niveaux.

Questions connexes