44 Stimmen

Wie kann man den IE zwingen, Javascript neu zu laden?

Ich benutze IE 8 auf Vista, und jedes Mal, wenn ich eine Javascript-Datei ändern und dann Debugging starten, muss ich Strg+F5 drücken, damit mein Javascript neu geladen wird. Gibt es eine Möglichkeit, um es automatisch neu zu laden Javascript, wenn ich Debuggen starten, aber nicht verlieren die Leistung gewinnt, wenn nur das Surfen im Netz?

Ja, ich weiß, dass Sie den IE wahrscheinlich nicht mögen, aber denken Sie daran, dass die Frage nicht lautet: "Was ist der beste Browser?

48voto

Paolo Bergantino Punkte 465120

Fügen Sie eine Zeichenkette am Ende Ihrer URL hinzu, um den Cache zu unterbrechen. Ich mache das normalerweise (mit PHP):

<script src="/my/js/file.js?<?=time()?>"></script>

So dass es jedes Mal neu geladen wird, während ich daran arbeite, und ich nehme es dann ab, wenn es in Produktion geht. In Wirklichkeit abstrahiere ich das ein wenig mehr, aber die Idee bleibt die gleiche.

Wenn Sie sich den Quellcode dieser Website ansehen, wird die Revisionsnummer in ähnlicher Weise an das Ende der URL angehängt, um die Änderungen zu erzwingen, wenn die Javascript-Dateien aktualisiert werden.

25voto

Alconja Punkte 14686

Paolos allgemeine Idee (d.h. effektiv einen Teil der Anfrage uri ändern) ist Ihre beste Wette. Ich würde jedoch vorschlagen, einen statischeren Wert zu verwenden, z. B. eine Versionsnummer, die Sie aktualisieren, wenn Sie Ihre Skriptdatei geändert haben, so dass Sie immer noch die Leistungsvorteile der Zwischenspeicherung nutzen können.

Also entweder so etwas wie dies:

<script src="/my/js/file.js?version=2.1.3" ></script>

oder vielleicht

<script src="/my/js/file.2.1.3.js" ></script>

Ich bevorzuge die erste Option, da man so die eine Datei beibehalten kann, anstatt sie ständig umbenennen zu müssen (was zum Beispiel eine konsistente Versionsgeschichte in der Versionskontrolle aufrechterhält). Natürlich würde jede der beiden Möglichkeiten (so wie ich sie beschrieben habe) bedeuten, dass Sie Ihre Include-Anweisungen jedes Mal aktualisieren müssen. Daher sollten Sie sich vielleicht einen dynamischen Weg ausdenken, wie z.B. das Ersetzen eines festen Wertes durch einen dynamischen bei jedem Einsatz (mit Ant oder was auch immer).

18voto

Vadim Punkte 20269

Wenn Sie mit einer Webseite oder einer Javascript-Datei arbeiten, möchten Sie, dass sie bei jeder Änderung neu geladen wird. Sie können die Einstellungen im IE 8 so ändern, dass der Browser niemals zwischenspeichert.

Befolgen Sie diese einfachen Schritte.

  1. Wählen Sie Werkzeuge > Internetoptionen.
  2. Klicken Sie auf der Registerkarte Allgemein auf die Schaltfläche Einstellungen im Abschnitt Browserverlauf.
  3. Klicken Sie auf das Optionsfeld "Jedes Mal, wenn ich die Webseite besuche".
  4. Klicken Sie auf die Schaltfläche OK.

6voto

undeniablyrob Punkte 1239

Wenn Sie dies nur für IHREN Browser tun wollen (d.h. nicht für Ihre Benutzer), dann würde ich Ihren Code NICHT so einstellen, dass der Cache nicht verwendet wird. Wie José sagte, gibt es einen Leistungsverlust.

Und ich würde die Zwischenspeicherung im IE nicht ganz abschalten, da Sie diesen Leistungsgewinn bei jeder besuchten Website verlieren. Sie können den IE anweisen, für eine bestimmte Website oder Browsing-Sitzung immer vom Server zu aktualisieren:

  1. IE-Entwicklertools öffnen
  2. Wählen Sie Cache aus dem Menü
  3. Aktivieren Sie "Immer vom Server aktualisieren".

Oder, für die Tastatur-Kurzbefehle-Liebhaber (wie mich) da draußen

  • F12, Alt+C, Pfeil nach unten, Alt+R.

HINWEIS ZUR VORSICHT : Nachdem ich dies gesagt habe... Denken Sie daran, dass Sie immer dann, wenn Sie auf eine andere Art und Weise entwickeln/testen, als die Website in der Produktion angesehen wird, das Risiko besteht, gemischte Ergebnisse zu erhalten. Ein gutes Beispiel ist dieses Caching-Problem. Wir haben ein Problem gefunden, bei dem der IE unsere Ajax-Aufrufe zwischengespeichert hat und die Ergebnisse einer GET-Methode nicht aktualisiert hat. Hätten wir die Zwischenspeicherung im IE deaktiviert, wäre uns dieses Problem in der Entwicklungsphase nie aufgefallen, und wir hätten es so in der Produktion eingesetzt.

2voto

binard Punkte 1655

Wenn Sie den IE11 verwenden, können Sie mit den IE-Entwicklertools festlegen, dass der IE für eine bestimmte Browsersitzung immer vom Server aktualisiert wird.

  • Öffnen Sie die IE-Entwicklerwerkzeuge mit der Taste F12
  • Gehen Sie zur Registerkarte Netzwerk
  • Klicken Sie auf die Schaltfläche "Immer vom Server aktualisieren".

button always refresh from the server

(Entschuldigung für die französische Aufnahme)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X