2010-07-11 2 views
2

Nous avons un tas de pages qui obtiennent le trafic très élevé, et en tant que tel, nous avons les éléments suivants dans web.config:Est-il possible de mettre en cache par rôle d'appartenance dans asp.net mvc?

<caching> 
    <outputCacheSettings> 
    <outputCacheProfiles> 
     <add name="defaultCache" duration="900" varyByParam="*" location="Any"/> 
    </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 

et l'attribut suivant sur les méthodes de régulation nécessaires:

[OutputCache(CacheProfile = "defaultCache")] 

Cela nous a bien servi car il n'y a pas d'intersection entre les pages mises en cache servies aux utilisateurs normaux et celles qui occupent un rôle d'administrateur. Cependant, nous avons maintenant implémenté un CMS où l'interface du CMS est rendue dans la plupart des pages si un utilisateur est connecté sous un rôle d'administrateur. Cependant, nous avons constaté que la stratégie de mise en cache actuelle ne fonctionne pas pour nous maintenant que le contenu d'administration est mis en cache et servi aux utilisateurs normaux.

Alors, existe-t-il un moyen de mettre en cache par rôle? Est-ce même possible où l'URL d'une page reste la même mais le contenu change selon le rôle connecté? Serait-il préférable de modifier l'URL en ajoutant quelque chose comme? Admin = true à toutes les pages pertinentes de sorte que l'attribut varyByParam="*" sur notre profil de cache peut faire son travail?

Merci.

Répondre

3
<add name="defaultCache" duration="900" varyByParam="*" varyByCustom="membership" location="Any"/> 

Global.asax:

public override string GetVaryByCustomString(HttpContext context, string custom) 
{ 
    if (custom == "membership") 
    { 
     string membership = "";//Get membership. 
     return membership; 
    } 

    return string.Empty; 
} 
Questions connexes