Comment désactiver le serveur de mise en cache côté sur IIS 7.5 (asp net mvc3)
J'ai du mal avec mon installation IIS concernant la mise en cache, voici une brève description de mon problème:
Je suis en train de faire un site pour les mobiles et non-mobiles, le partage de la même contrôleurs. C'est à dire: monsite/page va servir ce soit monsite/page.cshtml, ou monsite/M/page.cshtml, en fonction de l'appareil.
Le hic, c'est, il a bien fonctionné avec mon local et l'intégration de l'environnement (cassiini et iis 6), mais sur une autre machine (2008r2/iis 7.5), apparemment il y a un agressif côté serveur politique de mise en cache:
- Si j'ai accès au site web à partir d'un ordinateur de bureau, j'ai la bonne pages (version bureau)
- Si maintenant, je utiliser mon téléphone portable pour accéder au site, je vais avoir la version de bureau, ce qui implique d'un côté serveur cache, mon téléphone n'est pas en utilisant le même réseau).
Au contraire, si je devais redémarrer le serveur et accéder au site à l'aide de mon téléphone d'abord, puis je vais avoir la version mobile sur mon bureau (uniquement pour les pages que j'ai déjà visité, bien sûr).
J'ai essayé les 2 solutions jusqu'à présent:
Désactivation OutputCache à partir de mon site Web.config:
<httpModules>
[..]
<remove name="OutputCache" />
</httpModules>
Et décochez l'option "Activer la mise en cache de sortie" dans "mise en Cache de Sortie" pour mon site dans IIS.
Ce qui m'énerve c'est que je n'ai pas ce problème avec mon autre serveur (iis 6.0), bien que la mise en cache est activé sur celui-ci, qui m'amène à penser qu'elle est liée à iis 7 de la mise en cache plus.
Ma question est simple: comment désactiver le serveur de mise en cache côté sur IIS 7.5?
Merci d'avance pour votre iis lumières!
Trouvé!
Désolé les gars, vous ne pouviez pas vraiment deviner que l'un, j'étends RazorViewEngine (en fait j'ai utilisé un échantillon mobile mvc3 application de modèle), et cette classe remplace FindView, il est censé prendre en compte un useCache paramètre, mais apparemment, peu importe comment je configurer IIS, il a été défini à true avec iis7. Je l'ai mis à faux partout. Je vais regarder dans le réglage de ce paramètre demain.
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
Merci pour votre aide les gars, j'ai une bonne compréhension de toutes les possibilités de mise en cache avec IIS maintenant ;). Il est intéressant de noter que celle-ci se comporte différemment avec IIS 7.0 (IIS6 et Cassiini étaient compatibles).
Edit:
Plus d'infos: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201 , il est lié à debug/release de travail de FindView.
C'était mon problème exact: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201
J'ai oublié d'ajouter que, dans l'équation, je n'ai pas suspect MVC peut être mise en cache de la vue de la résolution elle-même.
OriginalL'auteur troebr | 2011-11-28
Vous devez vous connecter pour publier un commentaire.
Comme Rick dit, vous avez besoin pour le profil de cette première. Un test rapide serait de mettre en œuvre un no-cache de contrôleur comme je l'ai expliqué ici:
Désactiver le cache du navigateur pour toute la ASP.NET site web
OriginalL'auteur Adam Tuliper - MSFT
Si vous parlez de types statiques, tels que des images et de ce fait, vous pouvez l'ajouter à votre site web.config
Mise à jour:
Ici est un lien
Ce lien parle en détail sur ce que vous voulez faire.
J'ai ajouté à ma réponse sur comment aborder la dynamique de la mise en cache du contenu
Merci, c'est ce que je lisais, mais qui ne semble pas être suffisant.
OriginalL'auteur Etch
Je pense que vous faites affaire avec cache du navigateur. Avez-vous présenté le trafic de voir le 304s? Vous pouvez être en train de chasser le mauvais problème.
REMARQUE: Votre solution de contournement du cache doit inclure le côté client comme côté serveur.
Vous avez besoin de surveiller les réponses HTTP pour savoir ce qui se passe. À la recherche visuellement les pages sur les différents dispositifs n'est pas très fiable.
Je suis en train de désactiver OutputCache comme vous l'avez suggéré, malheureusement, je ne sais pas comment suivre le code de statut HTTP sur mon android, mais j'ai 200s sur le bureau.
OriginalL'auteur rick schott