Random Querystrings zu vermeiden, DH Zwischenspeichern
Es ist ein bekanntes problem, dass der IE-caches zu viel von html, auch wenn die Cache-Control: no-cache
oder Last-Modified
header everypage.
Diese behaiviour ist wirklich beunruhigend, wenn die Arbeit mit Abfragezeichenfolgen um dynamische Informationen, wie IE hält es die gleichen Seite (d.h.: http://example.com/?id=10
) und dient der zwischengespeicherten version.
Hab ich gelöst, es hinzufügen entweder eine Zufallszahl oder einen timestring zu den querystring ( wie andere getan haben )http://example.com/?id=10&t=2009-08-06_13:12:56
, die Ignoriere ich einfach serverside.
Ist es eine bessere option? Gibt es eine andere, bessere Möglichkeit zur acomplish? Ich bin mir bewusst, dass POST
nicht zwischengespeichert, sondern es ist semanticaly korrigieren, um GET
hier.
Ihre Behauptung ist falsch, übrigens. IE nicht "in cache zu viel von HTML". Sehen www.fiddler2.com/redir/?id=httpperf für die Diskussion der Zwischenspeicherung in Internet Explorer.
IE hat einige unerwartete/inkonsistent Verhalten in Bezug auf caching.
durch die Verwendung der generischen $.ajax wie bereits in der oben genannten post stackoverflow.com/a/1767342/5969842 geholfen, das Problem zu lösen, ohne Verwendung einer Zufallszahl
InformationsquelleAutor Esteban Küber | 2009-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie sind mit jQuery anstelle von $.get oder $.getJson, verwenden Sie die generische $.ajax und explizit den cache-Wert auf false. Das folgende ist ein Beispiel:
Etwas mehr code erforderlich (nicht viel, obwohl), als mit .getJson oder .Holen, aber lösen wird das problem sauber und ohne anfügen von zufälligen zahlen.
InformationsquelleAutor Simon Fox
Können Sie auch die aktuelle Unix-Zeit in Millisekunden, um zu vermeiden das problem der vielen Anfragen in einer Sekunde (es ist viel weniger wahrscheinlich, um mehrere Anfragen in einer Millisekunde)
InformationsquelleAutor Sinan Taifour
Verwendung einer Zufallszahl (kein timestamp) auf den querystring, oder tatsächlich ändert die Dateinamen sind die beiden Methoden empfohlen. Steve Souders und YAHOO!'s performance group veröffentlicht eine Tonne nützliche Informationen und Praktiken haben Sie entdeckt und entwickelt hat, während die Optimierung einer der weltweit meistbesuchten Eigenschaften.
InformationsquelleAutor Rex M
So, in the end, die einzige zuverlässige Möglichkeit, dies zu tun (Dank IE6) ist mit einem
zufällig,
oder
Zeit gebunden
querystring.
Könnten Sie einen
Zeit gebunden querystring
das ändert nur alle 15 Sekunden (oder andere Zeit), so würden Sie senken die server-Treffer zählen, wie man Sie lokal zwischengespeicherte Inhalte für die 15 Sekunden.
Wenn Sie
ein
standard
konform
browser, können Sie Weg mit nur
ETags.
Generieren Sie die "random" - Teil der querystring mit javascript) wie gezeigt auf stackoverflow.com/questions/1234246/..., Die Art und Weise, dass es anders sein wird jedes mal die
get
oderpost
ist getan."...(Dank IE6) ist ..." Dank IE7 zu, habe ich nicht getestet, IE8 noch.
InformationsquelleAutor Esteban Küber
Ich habe das gleiche problem, aber achten Sie darauf, in einer Sekunde kann es viele Anfragen. Dies ist der Grund, warum ich dieses verwenden:
InformationsquelleAutor FWH
Haben Sie versucht, indem eine ETag - header in der Antwort?
Verwenden Sie ein zufälliges, oder eine Prüfsumme der generierten Seite, so dass die zwischengespeicherte version ist gedient, wenn angemessen.
Ich bin mir nicht sicher, was das Verhalten des IE, aber mit den letzten Versionen sollte es funktionieren.
Siehe auch die HTTP-RFC Abschnitt der ETag
InformationsquelleAutor filippo