7
votes

ASP.NET MVC 3.0 Attribut [SortieCache] - Est-ce que Global, ou par session?

Lors de la création d'une application ASP.NET MVC 3.0, je peux inclure un attribut de sortieCache sur une action et définir la durée du cache persistera. Après cette durée, toute activité entraînant l'incendie entraînera ce résultat mis en cache et rafraîchis.

Ma question est ... Cette sortie Cached Sortie globale pour toutes les sessions utilisateur ou cette option de cache est-elle spécifique à chaque session. Dans d'autres mots, si User1 apporte une demande dans laquelle une action avec un attribut de sortieCache est définie sur 1 heure commence leur demande à sa demande de midi (12h00). User2 apporte une demande à la même action, mais à Sayon-trente (12h30). Le résultat mis en cache sera-t-il le même pour les deux utilisateurs et, dans l'affirmative, la sortie en cache pour User2 sera-t-elle rafraîchie à 13h00?


0 commentaires

3 Réponses :


6
votes

dépend. Si votre URL contient des pièces spécifiques à l'utilisateur (E.G. ~ / blogs / userID / 1 ), oui, sinon ce n'est pas spécifique à la session. Vous pouvez l'ajuster correctement en fonction de Vary By Param, ...

La mise en cache dans ASP NET MVC n'est pas différente des formulaires Web, il s'agit simplement de la même infrastructure qui est basée sur l'URL .


1 commentaires

J'ai une question de mise en cache ici . Appréciez votre contribution



5
votes

Vous pouvez utiliser VaryByParam comme Aliostad dit, la durée serait alors spécifique de session, sinon ce n'est pas le cas.

[OutputCache(Duration=10, VaryByParam="none")]


2 commentaires

J'aime votre réponse parce que vous avez fourni un exemple. Merci. +1. Parce que Aliostad a en fait fourni la même réponse d'abord, je reçois @aliostad la réponse.


La seule chose que VaryByparam peut faire est de faire des copies en cache uniques basées sur une chaîne de requête ou des valeurs de formulaire. La mise en cache serait spécifique à la session uniquement si l'ID de l'utilisateur ou une autre valeur d'identification est incluse dans les paramètres de requête ou de formulaire.



0
votes

Vous pouvez facilement le faire Session en fonction d'un VarybyCustom et renvoyer le SessionId (opération très peu coûteuse).


0 commentaires