2009-06-14 5 views
3

Dans mon application ASP.net MVC, j'ai plusieurs vues que je voudrais enregistrer dans le cache du navigateur. J'ai les méthodes pour le faire, mais voici mon problème.Comment effacer/expirer le cache du navigateur lors de la déconnexion?

Le menu de mon site diffère entre les visiteurs connectés et déconnectés. Si la page connectée est mise en cache, même lorsque l'utilisateur se déconnecte, le menu reste en mode connecté. Ce n'est pas le cas, mais c'est le navigateur de ce visiteur.

Comment puis-je effacer/expirer ce cache afin que le navigateur du visiteur se mette à jour quand j'en ai besoin tout en étant capable d'utiliser le cache du navigateur?

Merci d'avance!

Répondre

3

Pour les pages HTML, c'est difficile. J'ai désactivé la mise en cache du client pour la même raison et j'ai essayé de rendre la mise en cache du serveur aussi efficace que possible. J'utilise maintenant OutputCache avec VaryByCustom défini sur le statut de connexion.

Nous avons effectué des tests de charge sur ce système et le seul goulet d'étranglement est la bande passante générée.

Et sur une note de côté: j'ai utilisé la mise en cache de donut pour le statut de connexion. Mais je ne pouvais pas le faire fonctionner avec une compression dynamique (pour réduire le goulot d'étranglement de la bande passante mentionné ci-dessus)

Voir aussi this question

0

Vous pouvez le faire avec un attribut AutoRefresh sur votre méthode d'action. Voici quelques exemples:

[AutoRefresh(ControllerName = "Home", ActionName = "About", DurationInSeconds = 10)] 
public ActionResult Index1() 
{ 
} 
AutoRefresh(ActionName = "About", DurationInSeconds = 15)] 
public ActionResult Index2() 
{ 
} 
[AutoRefresh(RouteName = "ByFavoriteRoute", DurationInSeconds = 30)] 
public ActionResult Index3() 
{ 
} 
[AutoRefresh(DurationInSeconds = 45)] 
public ActionResult Index4() 
{ 
} 
Questions connexes