J'ai des difficultés avec ma configuration IIS en ce qui concerne la mise en cache, voici une brève description de mon problème :
Je crée un site pour mobile et non-mobile, partageant les mêmes contrôleurs. IE : mysite/page servira soit mysite/page.cshtml, soit mysite/M/page.cshtml, en fonction de l'appareil.
Voici le problème, cela fonctionne bien avec mon environnement local et d'intégration (cassiini et iis 6), mais sur une autre machine (2008r2/iis 7.5), il y a apparemment un problème d'agressivité de la part de l'utilisateur. côté serveur la politique de mise en cache :
- Si j'accède au site web à partir d'un ordinateur de bureau, j'obtiens les pages correctes (version de bureau).
- Si maintenant j'utilise mon téléphone portable pour accéder au site, j'aurai la version de bureau (ce qui implique un cache côté serveur, mon téléphone n'utilisant pas le même réseau).
Au contraire, si je redémarre le serveur et que j'accède au site en utilisant d'abord mon téléphone, j'obtiendrai la version mobile sur mon bureau (uniquement pour les pages que j'ai déjà visitées, bien entendu).
J'ai essayé 2 solutions jusqu'à présent :
Désactivation de OutputCache dans mon Web.config :
<httpModules>
[..]
<remove name="OutputCache" />
</httpModules>
Et décocher "Enable output cache" dans "Output Caching" pour mon site dans IIS.
Ce qui me gêne, c'est que je n'ai pas ce problème avec mon autre serveur (iis 6.0), bien que la mise en cache soit activée sur celui-ci, ce qui me fait penser que c'est lié à l'ajout de la mise en cache dans iis 7.
Ma question est simple : Comment désactiver la mise en cache côté serveur sur IIS 7.5 ?
Merci d'avance pour vos lumières iis !
Je l'ai trouvé !
Désolé les gars vous ne pouviez pas vraiment deviner cela, j'étend RazorViewEngine (en fait j'ai utilisé un exemple d'application mobile mvc3 template), et cette classe surcharge FindView, elle est supposée prendre en compte un paramètre useCache, mais apparemment peu importe comment j'ai configuré IIS, il a été mis à true avec iis7. Je l'ai mis à false partout. Je me pencherai demain sur le réglage approprié de ce paramètre.
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
Merci pour votre aide, j'ai maintenant une bonne compréhension de toutes les possibilités de mise en cache avec IIS ;). Il est intéressant de constater que cela se comporte différemment avec IIS 7.0 (IIS6 et Cassiini étaient cohérents).
Editer :
Plus d'informations : http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201 Il s'agit d'un problème lié au fonctionnement de FindView en mode débogage/libération.
C'est exactement le problème que j'ai rencontré : http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201