Frage

Ich habe zahlreiche Möglichkeiten versucht, IE8 zu bekommen eine Seite neu zu laden, aber fehlgeschlagen. IE nur hält sie den internen Cache verwenden, ohne den Webserver für sie zu bitten.

Ich bin die folgenden Header von meinem Webserver zu senden:

Response.Add(new StringHeader("Expires", DateTime.UtcNow.AddYears(-1).ToString("r")));
Response.Add(new StringHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"));
Response.Add(new StringHeader("Pragma", "no-cache"));
Response.Add(new StringHeader("Last-Modified", DateTime.UtcNow.ToString("r")));

Es ist nur eine von vielen Kombinationen, dass ich versucht habe.

Wie kann ich IE die Seite jedes Mal holen (ohne meine Nutzer zu zwingen Caching innerhalb IE zu deaktivieren)?

War es hilfreich?

Lösung

Der richtige Weg ist, diesen HTTP-Header in der Antwort zu senden:

Pragma: no-cache
Expires: -1
Cache-Control: no-cache, no-store

Mit ihnen macht alles funktioniert in IE ohne weitere Änderungen.

Andere Tipps

Der einfachste Weg ist es, einen Parameter mit einem komprimierten Datum- / Zeitstempel auf die Query-String anhängen ... Dies macht es wie eine ganz neue Seite an den Browser aussieht.

Nur ein kurzes Update , wenn Sie eine Mitteilung verfassen Daten an den Server sind, dann wird IE den Cache überspringen und die neuen Daten geladen werden. wenn Sie sind jedoch GET-Anfragen Ausgabe, dann IE wird unter der URL schauen und es ist eigene Einstellungen, ob aus dem Cache zu ziehen, um zu bestimmen oder tatsächlich für die Daten an den Server gehen.

Nun, wenn der Benutzer die „Neuere Versionen der gespeicherten Seiten“ auf Nie gesetzt hat, dann gibt es nichts, was man dagegen tun kann kurz einen Wert an die Query-String anhängen. Siehe KB263070 für detaillierte Information von MS auf diese Optionen. Ein kurzer Blick durch Microsoft Antworten zeigt eine große Anzahl von Menschen, die etwas von diesem gewesen sein. Die Lösung, die immer gegeben ist für den Benutzer ist die Cache-Einstellungen zu ändern.

Also, für Sie, die Lösung wird auf (in Höhe der Komplexität) sein

  1. Anfügen eines sehr variable Query-String-Wert
  2. Informieren Sie Ihren Benutzern, dass sie MÜSSEN die „Check für neuere Versionen“ ändern Sie die Einstellung entweder an jedem Zugriff auf die Seite oder automatisch.
  3. Ändern Sie Ihre Links Post Rücken zu verursachen. (Igitt)

Eine Reihe von Anwendungen wählen, entweder Punkt 2 oder Punkt 1. Der Grund dafür ist, dass 2 die geringsten Auswirkungen auf die Codebasis hat, während Punkt 1 die geringsten Auswirkungen auf die Benutzer hat.

Wenn dies eine Admin-Seite ist, dann würde ich mit der Option sagen gehen 2, wie Sie eine angemessene Menge der Hebelwirkung über den Benutzer Desktop-Einstellungen haben sollten.

Hoffentlich Ich verstehe Ihre Frage, vielleicht gibt diesen einen Versuch, das wird klar:

   List<string> keys = new List<string>();
    IDictionaryEnumerator enumerator = Cache.GetEnumerator();
    while (enumerator.MoveNext())
    {
        keys.Add(enumerator.Key.ToString());
    }

    foreach(string key in keys)
    {
        Cache.Remove(key);
    }

Wenn dieser Bedarf auf mehreren Seiten sein, Sie es in einer Masterseite setzen könnten (oder eine andere Refactoring verwenden).

Es gibt auch den Output Direktive, wenn die oben nicht ist das, was Sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top