it-swarm.com.de

Wie zu zwingen IE Javascript neu laden?

Ich verwende IE 8 unter Vista, und jedes Mal, wenn ich eine Javascript-Datei ändere und dann mit dem Debuggen beginne, muss ich Strg + F5 drücken, um mein Javascript neu laden zu lassen. Gibt es eine Möglichkeit, das Javascript automatisch neu zu laden, wenn ich mit dem Debuggen beginne, ohne dabei die Leistungssteigerungen zu verlieren, wenn Sie nur im Internet surfen?

Ja, ja, ich weiß, dass du IE wahrscheinlich nicht magst, aber die Frage ist nicht "Was ist der beste Browser?".

43
Max Schmeling

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

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

Damit es jedes Mal neu geladen wird, wenn ich daran arbeite, und es abnehmen, wenn es in Produktion geht. In Wirklichkeit abstrahiere ich dies etwas mehr, aber die Idee bleibt gleich.

Wenn Sie den Quellcode dieser Website auschecken, fügen Sie die Revisionsnummer in ähnlicher Weise am Ende der URL an, um die Änderungen bei jeder Aktualisierung der Javascript-Dateien zu erzwingen.

48

Die allgemeine Idee von Paolo (d. H. Das Ändern eines Teils der Anfrage-URI) ist die beste Wahl. Ich würde jedoch empfehlen, einen statischeren Wert zu verwenden, z. B. eine Versionsnummer, die Sie aktualisieren, wenn Sie Ihre Skriptdatei geändert haben, sodass Sie immer noch die Leistungssteigerungen beim Caching nutzen können.

Also entweder so etwas:

<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 Sie die eine Datei beibehalten können, anstatt sie ständig umzubenennen (was beispielsweise den konsistenten Versionsverlauf in Ihrer Quellcodeverwaltung beibehält). Natürlich würde eine der beiden Anweisungen (wie ich sie beschrieben habe) jedes Mal eine Aktualisierung der Include-Anweisungen beinhalten. Daher möchten Sie vielleicht einen dynamischen Weg finden, um dies zu tun, indem Sie beispielsweise bei jeder Bereitstellung einen festen Wert durch einen dynamischen Wert ersetzen (mit Ant oder was auch immer).

25
Alconja

Wenn Sie mit Webseiten oder Javascript-Dateien arbeiten, möchten Sie, dass sie bei jeder Änderung neu geladen werden. Sie können die Einstellungen in IE 8 ändern, damit der Browser niemals zwischenspeichert. 

Folge diesen einfachen Schritten.

  1. Wählen Sie Extras-> Internetoptionen.
  2. Klicken Sie auf der Registerkarte Allgemein im Abschnitt Browserverlauf auf Einstellungen.
  3. Klicken Sie auf das Optionsfeld "Bei jedem Besuch der Webseite".
  4. Klicken Sie auf die Schaltfläche OK.
16
Vadim

Wenn Sie dies nur in IHREM Browser tun möchten (a.k.a.), so würde ich Ihren Code NICHT so einstellen, dass er den Cache nicht verwendet. Wie José sagte, gibt es einen Leistungsverlust. 

Und ich würde das Cachen auf IE nicht vollständig deaktivieren, da Sie diesen Leistungsgewinn für jede Website verlieren, die Sie besuchen. Sie können IE anweisen, immer für eine bestimmte Site oder Browsersitzung vom Server zu aktualisieren:

  1. Öffnen Sie IE Developer Tools
  2. Wählen Sie Cache aus dem Menü
  3. Klicken Sie auf "Von Server immer aktualisieren".

Oder für die Tastaturkürzel (wie ich) da draußen .. 

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

HINWEIS ZUR VORSICHT : Nachdem Sie dies gesagt haben ... Denken Sie daran, dass jedes Mal, wenn Sie auf eine andere Art und Weise entwickeln/testen, als die Website in der Produktion betrachtet wird, die Gefahr besteht, dass die Ergebnisse gemischt werden. Ein gutes Beispiel ist dieses Caching-Problem. Wir haben ein Problem gefunden, bei dem IE unsere Ajax-Aufrufe zwischenspeicherte und die Ergebnisse einer GET-Methode nicht aktualisiert. Wenn wir das Caching im IE nicht deaktiviert hätten, hätten wir dieses Problem nie in der Entwicklung gesehen und hätten es für die Produktion auf diese Weise bereitgestellt.

5
coderob

In Javascript denke ich, dass dies nicht möglich ist, da moderne Browser eine Richtlinie zur Sicherheit in Javascripts haben.

Sie können versuchen, hinzuzufügen 

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

In Ihrer Kopfzeile haben Sie jedoch einen Leistungsverlust.

1
José Leal

Dies sollte den Trick für ASP.NET tun. Das Konzept ist dasselbe wie im Beispiel PHP. Da die URL jedes Mal, wenn das Skript geladen wird, unterschiedlich ist, sollte kein Browser des Proxys die Datei zwischenspeichern. Ich werde dazu verwendet, meinen JavaScript-Code in separate Dateien zu packen, und habe viel Zeit mit Visual Studio verschwendet, bis mir das klar wurde Die JavaScript-Dateien würden nicht neu geladen.

 <script src = "Scripts/main.js? version = <% = DateTime.Now.Ticks.ToString ()%>" type = "text/javascript"> </ script> 

Vollständiges Beispiel:

 <% @ Page Title = "Startseite" Language = "C #" MasterPageFile = "~/Site.master" AutoEventWireup = "true" 
 CodeBehind = "Default.aspx.cs" Inherits = "WebApplication1._Default"%> 

 <Asp: Content ID = "HeaderContent" runat = "Server" ContentPlaceHolderID = "HeadContent"> 

 <script src = "Scripts/jquery-1.4.1-vsdoc.js" type = "text/javascript"> </ script> 
 <script src = "Scripts/main.js? version = <% = DateTime.Now.Ticks.ToString ()%>" type = "text/javascript"> </ script> 
 <script type = "text/javascript"> 

 $ (document) .ready (function () {
 myInit (); 
}); 

 </ script> 
 </ asp: Content> 

Natürlich sollte diese Lösung nur in der Entwicklungsphase verwendet werden und vor der Veröffentlichung der Website entfernt werden.

1
drpetermolnar

Um zu vermeiden, dass Sie während der Entwicklung einer Website wiederholt auf der Registerkarte IE die Taste F5 drücken müssen, verwenden Sie ReloadIt

enter image description here

Für jede in IE angezeigte Webseite können Sie einen Dateinamen, ein Verzeichnis oder eine Gruppe von ihnen konfigurieren. Wenn in einem dieser konfigurierten Pfade eine Änderung auftritt, aktualisiert ReloadIt die Registerkarte IE. Ein einfaches Werkzeug. Es funktioniert einfach. 

Dies wird alles neu laden, nicht nur Javascript.

0
Cheeso

Fügen Sie am Ende Ihrer URL ein Änderungsdatum der js-Datei hinzu. Mit PHP würde es ungefähr so ​​aussehen:

echo '<script type="text/javascript" src="js/something.js?' . filemtime('js/something.js') . '"></script>';

Wenn Ihr Skript jedes Mal neu geladen wird, wenn Sie es aktualisieren.

0
oO.

Wenn Sie ASP.Net ausführen, überprüfen Sie das in ASP.Net 4.5 verfügbare Modul für Bündelung und Minimierung.

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

Sie können ein "Bundle" deklarieren, das auf Ihre Javascript-Datei verweist. Jedes Mal, wenn sich Ihre Datei ändert, wird ein neues Suffix für die Querzeichenfolge erstellt. Dies geschieht jedoch nur, wenn sich die Datei ändert. Dies macht es sehr einfach, Updates bereitzustellen, da Sie nicht einmal daran denken müssen, Ihre Tags mit neuen Versionsnummern zu aktualisieren.

Es kann auch mehrere .js-Dateien in einer Datei bündeln und diese in einem Schritt minimieren. Dito für Css.

0
Rob Hudson