So deaktivieren Sie server-side caching auf IIS 7.5 (asp-net mvc3)
Bin ich zu kämpfen mit meinem IIS setup in Bezug auf caching, hier eine kurze Beschreibung meines Problems:
Mache ich eine Website für mobile und nicht-mobile, teilen die gleichen Controller. IE: mysite/Seite dienen entweder mysite/Seite.cshtml oder mysite/M/Seite.cshtml, je nach Gerät.
Hier ist der Haken, es funktionierte mit meinem lokalen und integration-Umgebung (cassiini und iis 6), aber auf einer anderen Maschine (2008 R2/iis 7.5), anscheinend gibt es eine aggressive server-Seite - caching-Richtlinie:
- Wenn ich auf die website von einem desktop-Rechner, ich habe die richtigen Seiten (desktop-version)
- Wenn ich jetzt über mein Handy auf die Website zugreifen, ich habe die desktop-version, (was bedeutet, ein server-side-cache, mein Handy ist nicht mit im selben Netzwerk).
Im Gegenteil, wenn ich den server neu starten und Zugriff auf die Website mit meinem Handy zum ersten mal, dann werde ich die mobile version auf meinem desktop (nur für die Seiten habe ich bereits besucht, natürlich).
Versuchte ich 2 Lösungen so weit:
Deaktivieren OutputCache von meiner Web.config:
<httpModules>
[..]
<remove name="OutputCache" />
</httpModules>
Und deaktivieren Sie die Kontrollkästchen "Enable output cache" in "Ausgabe Zwischenspeichern" für meine Website in IIS.
Was mich nervt ist, dass ich nicht dieses problem mit meinem anderen server (iis 6.0), obwohl die Zwischenspeicherung aktiviert ist, führt mich zu glauben, es ist in Bezug auf iis 7-caching hinzu.
Meine Frage ist einfach: wie macht man deaktivieren, server-side caching auf IIS 7.5?
Vielen Dank im Voraus für Ihre iis-Lichter!
Es gefunden!
Sorry Leute, konnte man sich eigentlich nicht denke, dass ich verlängern RazorViewEngine (eigentlich habe ich eine Beispiel mobile mvc3-template-app), und diese Klasse überschreibt FindView, soll es zu berücksichtigen, eine useCache-parameter, aber anscheinend egal, wie ich den IIS konfigurieren, es wurde auf true festgelegt, mit iis7. Ich setze es auf false überall. Ich werde sehen, was sich in entsprechenden tuning der parameter von morgen.
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
Danke für Eure Hilfe Jungs, ich habe ein gutes Verständnis für alle caching-Möglichkeiten mit IIS jetzt ;). Es ist interessant, dass dies verhält sich anders mit IIS 7.0 (IIS6 und Cassiini waren konsistent).
Edit:
Mehr info: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201 , es ist zu debug/release arbeiten von FindView.
Dies war mein genaues problem: http://aspnet.codeplex.com/workitem/8201?PendingVoteId=8201
Ich vergaß hinzuzufügen, dass in der Gleichung, die ich nicht unbedingt MVC sein könnte, das Zwischenspeichern der view-Auflösung selbst.
InformationsquelleAutor troebr | 2011-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Rick sagte, müssen Sie das Profil zuerst. Ein kurzer test allerdings wäre die Umsetzung einer no-cache-controller, wie ich hier beschrieben:
Browser cache deaktivieren für die gesamte ASP.NET website
InformationsquelleAutor Adam Tuliper - MSFT
Wenn Sie sprechen, um statische Typen, wie Bilder und wie können Sie diese in Ihrem web.config
Update:
Hier ist ein link
Dieser link spricht im detail über das, was Sie tun möchten.
Ich Hinzugefügt, um meine Antwort auf den Umgang mit der dynamic content caching
Danke, das ist, was ich auch Lesen, aber das schien nicht genug zu sein.
InformationsquelleAutor Etch
Ich denke, Sie sind den Umgang mit browser-cache. Haben Sie sich profiliert, den Verkehr zu sehen, die 304s? Sie können die Jagd nach dem falschen problem.
HINWEIS: Ihre cache-busting-Lösung gehören die client-Seite als auch der server-Seite.
Sie überwachen die HTTP-Antworten zu wissen, was passiert. Suche optisch an die Seiten auf unterschiedlichen Geräten ist nicht sehr zuverlässig.
Ich bin versucht zu deaktivieren OutputCache, wie Sie vorgeschlagen, ich weiß leider nicht, wie die überwachung des HTTP-status-code auf meinem android, aber ich bekomme 200s auf dem desktop.
InformationsquelleAutor rick schott