OutputCache in ASP.NET MVC umgehen

8

Ich verwende das OutputCache-Attribut auf meiner MVC-Website wie folgt:

%Vor%

Aber manchmal möchte ich den Ausgabe-Cache vollständig umgehen und einen Abruf von der Datenbank erzwingen. Dies gilt insbesondere für meine Testumgebung, in der ich kontinuierlich neue Daten in die Datenbank zum Testen lade.

Kann ich in diesem Fall den Cache irgendwie umgehen?

Danke.

    
Cranialsurge 11.01.2011, 20:45
quelle

5 Antworten

2

Ich brauchte nur eine Cache-Abhängigkeit. Ich brauchte diese Änderung zur Laufzeit geändert werden, so dass Konfigurationsdateien keine Option waren.

Der Aktion, die eine "no-cache" -Option haben soll, wurde Folgendes hinzugefügt:

%Vor%

Und die folgende Aktion erstellt, die ich aufrufen kann, um den Cache zu aktualisieren.

%Vor%     
Cranialsurge 27.01.2011, 19:26
quelle
10

Anstatt alle Parameter für den Ausgabecache inline anzugeben, können Sie im Attribut ein OutputCache-Profil verwenden.

Mit Ausgabecache-Profilen können Sie alle Einstellungen für den Ausgabe-Cache in Ihrer Datei web.config speichern, dem Profil einen Namen geben und dann von Ihrem Attribut aus auf dieses Profil zeigen.

Sobald Sie diese Einstellung vorgenommen haben, können Sie die Einstellungen in der web.config ändern, mit der Sie debuggen, sodass die Caching-Dauer nur 1 Sekunde beträgt. Offensichtlich würden Sie Ihre Produktion web.config Datei mit einer viel längeren Dauer verlassen.

Weitere Informationen zu Profilen finden Sie in Ссылка

    
nikmd23 12.01.2011 04:06
quelle
4

Wenn Sie es komplett ausschalten wollten, könnten Sie

verwenden %Vor%

in Ihrer web.config unter.system.web. Wenn Sie es aus dem Code (mit einem Knopf oder etwas anderes) tun möchten, können Sie auch tun:

%Vor%

Dies wird wahrscheinlich nur auf Ihrem dev-Rechner funktionieren. Die meisten Server sind so eingerichtet, dass sie das Bearbeiten dieses Abschnitts in der machine.config nicht zulassen.

    
Tony Basallo 14.01.2011 17:08
quelle
1

Siehe den folgenden Artikel für einen AOP-Ansatz zum Anpassen des OutputCache

Ссылка

    
user181799 24.07.2012 05:28
quelle
1

Dies beantwortet nicht genau Ihre Frage, sondern beantwortet Ihren Titel (was nicht bedeutet, "wie man einen Gegenstand aus dem Cache löscht"): Sie könnten ein " VaryByParam " hinzufügen:

%Vor%

Wenn Sie den Cache umgehen wollen, übergeben Sie einfach den Parameter CacheBypass den Wert DateTime.UtcNow.Ticks (oder eine beliebige andere Sache) = & gt; zum Beispiel: http://localhost/?CacheBypass=1234567890

    
Vincent 09.10.2013 23:32
quelle