Verhindern des Cache auf der Zurück-Schaltfläche in Safari 5
Als der aktuelle safari 5 veröffentlicht wurde, und es stellt sich heraus, einige Probleme verursachen für meine website. Ich habe eine dynamische website laufen der klassischen ASP - (aber das sollte keine große Rolle) und die Website hat einige kreative Nutzung der history stack. Zum Beispiel können Sie auf eine Seite, die Listen der Produkte, dann gehen, um details über ein Produkt, und ändern Sie die Produkt (admin-Sicht). Wenn Sie auf speichern klicken Sie auf die Produkt-Informationen an den server gesendet wird via AJAX und einem history.back()
ausgestellt wird. Dies funktioniert in allen Browsern (safari <= 4), jedoch in der neu veröffentlichten safari 5 funktioniert es nicht mehr. Es scheint, dass, wenn Sie auf zurück klicken, in safari 5 ist es nicht eigentlich aktualisieren Sie die Seite, nur lädt er es aus dem cache, was bedeutet, dass die änderungen in der Detailansicht nicht angezeigt. Wie kann ich mich über diese Arbeit zu machen, die in safari 5? Dies ist der aktuelle code habe ich zum deaktivieren der Zwischenspeicherung (im Lieferumfang enthalten die oben auf jeder Seite):
Dim pStr
pStr = "private, no-cache, no-store, must-revalidate"
Response.AddHeader "pragma","no-cache" '?
Response.AddHeader "cache-control", pStr '? Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "cache-control", "post-check=0, pre-check=0" '? Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "Expires", "Mon, 26 Jul 1997 05:00:00 GMT" '?
Response.AddHeader "Last-Modified", Now()
InformationsquelleAutor der Frage Alxandr | 2011-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den leeren
unload
handler funktioniert nicht mehr. Stattdessen können Sie diepersisted
Eigenschaft desonpageshow
Veranstaltung. Es ist auf false festgelegt, auf der ersten Seite zu laden. Wenn die Seite geladen ist aus bfcache es auf true festgelegt ist.Kludgish Lösung ist, um zu erzwingen, reload, wenn die Seite geladen wird, bfcache.
Wenn du mit jQuery dann tun:
InformationsquelleAutor der Antwort Mika Tuupola
Nach einigen googeln und Graben habe ich eine Lösung gefunden habe, aber ich bin auch nicht glücklich darüber. Einstellung
onunload=""
im body-tag bewirkt, dass Safari erlischt die Seite, und laden Sie es aufwindow.history.back();
.InformationsquelleAutor der Antwort Alxandr
Hier ist ein anderer Weg:
Wählte ich diesen Weg nicht gehen, da das hinzufügen von HTML (onunload=""), um den body-tag .Net beteiligt, ändern Sie drei Dateien, in meinem Fall. Einstellung der onunload-Attribut in jQuery nicht lösen.
Dies funktioniert für mobile Sarfari (iPad).
InformationsquelleAutor der Antwort webXL