2017-03-03 3 views
0

Ich habe eine Browser-Seite Caching Problem speziell mit IE 11, die SomePage Seite wird immer aus dem Browser-Cache geladen. Die gleiche Seite funktioniert perfekt in Edge, Chrome und FF.IE11 Caching-Problem mit MVC 5

Die Seite wird von einer JS-Funktion wie unten genannt:

$.ajaxJsonAntiForgery({ 
     type: "POST", 
     url: '@Html.Raw(Url.Action("SomeAPI", "cntrl"))', 
     dataType: "json", 
     data: { model: model }, 
     success: function (result) { 
      if (result.Success) { 
       window.location = '@Html.Raw(Url.Action("SomePage", "cntrl"))'; 
     ... 

ich versucht habe, näherte sich folgendes:

  1. mit der URL eine Zufallszahl Anfügen. - Hat nicht funktioniert

  2. Added in Aktion Methode folgenden Code: -

    Response.Cache.SetCacheability nicht funktioniert (HttpCacheability.NoCache);
    Response.Cache.SetNoStore(); Response.Cache.SetExpires (DateTime.UtcNow.AddDays (-1)); Response.Cache.SetMaxAge (TimeSpan.Zero); Response.Cache.SetRevalidierung (HttpCacheRevalidation.AllCaches);

und in Fiddler kann ich folgende Header sehen:

Fiddler

  1. Hinzufügen Output Attribute auf Eineseite Aktion-Methode. - Hat nicht funktioniert

    [Output (NoStore = true, Dauer = 0, VaryByParam = "*", Location = System.Web.UI.OutputCacheLocation.None)]

Fiddler

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 

enter image description here

Bitte Beratung, was sonst in diesem Seitenkopf sein sollte, die den Browser anweisen werden - dass es diese Seite nicht zwischengespeichert werden sollte?

Antwort

0

Sie können das Caching global deaktivieren. Oder durch die Aktion in der Steuerung Dekoration

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
    Public ActionResult SomeApi(string param){ 
    ... 
    } 

In ASP.NET MVC, können Sie die OutputCacheAttribute verwenden Attribut Aktionsmethoden zu markieren, dessen Ausgang Sie im Cache speichern möchten. Wenn Sie einen Controller mit dem OutputCacheAttribute-Attribut markieren, wird die Ausgabe aller Aktionsmethoden im Controller zwischengespeichert [oder nicht zwischengespeichert, abhängig von den Attributwerten]. MSDN Article

Auch der Hinweis: Wenn Ihre Seite eigentlich nicht geändert hat, ASP.NET ist intelligent genug, um eine Cache-Seite für Geschwindigkeit zu verwenden.


Aktualisierung nach der oben genannten Schritte zur Fehlerbehebung versucht. Was ist mit der Einrichtung Ihres Ajax vor dem Anruf.

$.ajaxSetup({ cache: false}); 
+0

Eigentlich hatte ich das versucht, aber das hat auch nicht funktioniert. Tx – AaBa

+0

Klingt nach einem Problem, das nicht mit Ihrer Projektlösung zusammenhängt. Hast du es auf einer anderen Maschine versucht? – Marc

+0

Wie wäre es mit $ .ajaxSetup ({cache: false}); – Marc