Kraft-browser zu aktualisieren, javascript-code während der Entwicklung einer MVC-Ansicht?
Ziemlich straight-forward, ich bin die Entwicklung einer MVC5 application und habe bemerkt, (in letzter Zeit), dass mein Browser scheint das caching der JavaScript-code, den ich auf die Ansicht innerhalb @section Scripts { }
.
Derzeit Baue ich mit Chrome und ich habe versucht CTRL+F5
& CTRL+SHFT+R
denen lädt die Seite, aber die alert()
ich unkommentiert innerhalb der javascript-code ist immer noch das Rendern so kommentiert. Ich habe auch versucht, auf meinen localhost durch den Inkognito-Modus als auch mit anderen Browsern (Firefox, IE) und erhalte das gleiche Verhalten. Dies ist mein /Home/Index.cshtml
Ansicht, die die Standard-Ansicht, die geladen wird, wenn die Anwendung gestartet wird. Ich habe auch versucht, indem einige zusätzliche HTML-text in die Seite und wieder der neue code wird nicht unter Effekt/einblenden.
Meine aktuelle Chrome version ist Version 41.0.2272.118 m
wenn jemand irgendwelche Ideen, was könnte Los sein?
UPDATE:
Ich habe unter den Entwickler-Tools => Allgemeine Einstellungen in Chrome und überprüft [X] Disable cache (while DevTools is open)
und dann immer wieder (mit DevTools noch offen) versucht CTRL+SHFT+R
und CTRL+F5
mit dem gleichen Ergebnis von vor wo sind meine änderungen nicht wirksam.
UPDATE 2:
Mit DevTools öffnen habe ich mich auch gehalten die Refresh-Taste gedrückt und versuchte Normal/Hard/und Cache Leeren & Hard Reload-Optionen, die alle mit dem gleichen Ergebnis. Für die Einfachheit der Tests, die ich Hinzugefügt eine Warnmeldung in der unten dispaly, sobald die Seite geladen wird (und zurzeit keine Warnung kommt):
$(document).ready(function () {
alert("Test");
//Other Code/Functions -- No Error showing in Console
});
Können Sie nach dem Inhalt der uns den Blick, um zu sehen, mit dem @ - Abschnitt Scripts { } ?? Könnte einfacher sein, wenn wir sehen können, was Sie getan haben. Auch mit chrome öffnen der Entwickler-tools (F12), und klicken Sie auf das ZAHNRAD um die Einstellungen zu öffnen, es ist ein "cache Deaktivieren" aktivieren, markieren Sie es und wenn Sie jetzt aktualisieren Sie die Seite mit den Entwickler-tools öffnen, es wird nicht mit dem cache
Auch dies kann nicht helfen, aber wenn die Chrom-debug-panel geöffnet ist, können Sie drücken und halten Sie die page-reload-Taste für reload Optionen. Wählen Sie cache leeren und harten reload auch klar, dass alle nachfolgenden Abschnitt lädt Sie aus dem cache zu. Siehe stackoverflow.com/questions/14969315/... für mehr info.
Verwenden Sie für die Bündelung/Verkleinerung von MVC, oder andere Mechanismen, dass nicht jede Art der transformation, um Ihre Skript-Dateien?
Ja, ich habe einige bundles setup mit
BundleConfig.cs
, aber dieser code insbesondere gerendert wird direkt in @section Scripts { }
auf meiner Sicht -- und jetzt ändert sich der Anzeigen-code nicht angezeigt werden, entweder wie es scheint.InformationsquelleAutor Analytic Lunatic | 2015-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Die Bündelung von MVC, haben Sie zwei Möglichkeiten, um das caching zu deaktivieren:
System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("url", true)
zu beheben Ihrem Skript-URL, der zweite parameter (true
) ist erfordern ein hash generiert werden, mit der URL, somit, verhindert die Zwischenspeicherung von Ihrem browser, wenn Sie die Datei ändern. Das ist genau der gleiche hash erzeugt in der ersten option, aber ohne minifying.Habe ich ein kleines demo, die zeigen, dass die zweite option verhindert das Zwischenspeichern passiert, der trick ist immer den hash generiert aus Ihrem Skript-Inhalte ohne minifying Ihr Skript.
Ich ein Skript erstellt eine Datei namens
myscript.js
mit diesem Inhalt:Dann habe ich diese auf meine
BundleConfig.cs
:Wenn Sie fügen Sie eine
ScriptBundle
erhalten Sie eine minified Antwort wieder, daScriptBundle
ist nur einBundle
mitJsMinify
transformation (Quelle). Das ist, warum wir Sie einfachBundle
.Jetzt können Sie einfach fügen Sie Ihr Skript mit dieser Methode zu beheben, die Skript-URL mit hash appendend. Sie können die
Script.Render
Oder die
script
tag:So oder so generiert eine URL mit hash um zu verhindern, dass caching:
Nach der Bearbeitung meiner Datei:
Super Antwort, es funktioniert wie ein Charme für mich ! Danke
Nice one! Er funktioniert perfekt. Dank
Tut Verkleinerung Kraft erhalten Sie die neuesten javascript, auch wenn BundleTable.EnableOptimizations = false? Beause auf DEV, die Sie nicht haben, um wahr zu sein. Dank
Wow... gute Antwort!
InformationsquelleAutor Mahmoud Ali
Möchten Sie vielleicht ein no_cache-Variablen nachdem Sie Ihre Skript-url wie:
Wenn Sie zu verwalten, um eine zufällige Zahl an den Ort, den ich angezeigt, der browser wird automatisch laden Sie die neueste version von das Skript nach einem F5
InformationsquelleAutor szinter
Einen schnellen trick, der dieses problem löst, besteht aus dem öffnen der Skript-Datei in einem neuen tab, dann aktualisieren Sie Sie auf dieser Seite.
Wenn Sie geschehen, haben die Chrome-dev-tools öffnen, es wird sogar aktualisieren Sie es.
Vom dev-tool können Sie auch einfach Rechte Maustaste-in neuer Registerkarte öffnen Sie das Skript.
InformationsquelleAutor Etienne