Ich teste einen HTML / JS-Code auf meinem lokalen Host (Windows 7, Chrome v79.0.3945.130 (64-Bit)) und ungefähr 50% der Änderungen des Zeitcodes werden nicht im Browser angezeigt (ich sehe ihn mit Dev Tools / Sources) ).
Es gibt eine Menge Ratschläge im Internet, aber keiner scheint zu funktionieren:
- Klicken Sie mit der rechten Maustaste auf das Neuladen und wählen Sie "Cache leeren und hart neu laden" - hilft in 30% der Fälle nicht.
- Cache auf der Registerkarte "Netzwerk" der Chrome Dev Tools deaktivieren - hilft nicht.
- Fügen Sie
<meta http-equiv="Cache-control" content="no-cache">
in der Kopfzeile - nicht hilft. - Ersetzen
<script src="common.js"></script>
durch<script src="common.js?blabla"></script>
- hilft in 60% der Fälle, aber Sie müssen es tun, nachdem jede Änderung eine große Aufgabe ist. Außerdem funktioniert es nicht mit HTML-Änderungen. - Kopieren Sie eine Datei in eine neue Datei (wie index.html in index2.html) und ersetzen Sie den Dateinamen im Code - funktioniert immer, ist aber eine noch größere Aufgabe.
Das gleiche Problem tritt auf, wenn ich den Code an github.io festschreibe
Bitte helfen Sie mir dabei, damit die Website die Codeänderungen sofort widerspiegelt.
Bearbeiten: Ich habe eine Datei index3.html erstellt und dort nur "Hallo Welt" abgelegt. Öffnete die Datei im Browser. Geändert zu "Hallo Welt2" - der Browser hat den Inhalt aktualisiert. Geändert zu "Hallo Welt3" - der Browser zeigte auch nach mehreren Neuladungen und "Leeren Cache und hartes Neuladen" immer noch "Hallo Welt2" an. Ich habe zu "Hallo Welt4" gewechselt - der Browser zeigte immer noch "Hallo Welt2" an. In 4 Stunden wechselte ich zu "Hallo Welt5" - der Browser zeigt immer noch "Hallo Welt2". Diese Datei habe ich mit Basic Notepad bearbeitet.
Edit2: Die Leute fragen immer wieder, welchen Server ich benutze. Dies scheint ein Teil des Problems zu sein. Leider weiß ich es nicht und ich weiß auch nicht genau, was ich tun muss, um es zu überprüfen. Hier ist alles, was ich bisher herausgefunden habe:
- Ich habe ein
inetpub/wwwroot
Verzeichnis, in dem ich HTML- und JS-Dateien ablege und dann index.html in einem Browser unter öffnehttp://localhost/
. - Mein Netzwerkfenster in Devs Tools sieht folgendermaßen aus: Bildlink .
- Das Server-Setup war sehr schnell und erforderte keine zusätzliche Software zur Installation. Dh ich benutze nicht node.js.
- Es gibt iisstart.htm bei
inetpub/wwwroot
und wenn ich es öffnehttp://localhost/iisstart.htm
, steht IIS7.
quelle
index.html
einenX-Powered-By
oder einenServer
Header, der möglicherweise einen Hinweis auf den Webserver gibt. Das Googeln nach Ihrem Dateipfadinetpub/wwwroot
verweist stark auf einen IIS-Server.Antworten:
Die Verwendung eines Parameters ist der richtige Weg! Hier können Sie eine Versionsnummer hinzufügen, die Sie nur bei großen Änderungen manuell ändern, und zum Debuggen können Sie sie auf Date.time () setzen. In Ihrem <head> -Tag werden daher alle zwischengespeicherten Versionen überschrieben, da der Parameter immer neu ist einer:
Hoffe das hilft!
quelle
In IIS7 Windows Server unter Windows 7 müssen Sie einige Änderungen an einer Ihrer aufgerufenen Konfigurationsdateien vornehmen, um das Zwischenspeichern Ihrer Inhalte zu verhindern
web.config
. Die Konfigurationsdateien für IIS 7 und später befinden sich in%WinDir%\System32\Inetsrv\Config folder
dem%WinDir%
der Ordner , in dem Sie Windows ( in der Regel installiertC:/Windows
).Erstellen Sie eine Sicherungskopie Ihrer
web.config
vor dem Bearbeiten Datei, damit Sie ein Rollback durchführen können, wenn die Änderungen, die Sie an der Datei vornehmen, diese beschädigen.Fügen Sie in Ihrer
web.config
Datei einfach Folgendes hinzu, um das Zwischenspeichern Ihrer Datei zu verhindernindex.html
:Habe den Dateipfad für die
web.config
Datei von hier bekommen: Windows Doc: KonfigurationsreferenzDie Konfiguration für den obigen Cache finden Sie hier: Wie deaktiviere ich das Caching von HTML-Dateien für Einzelseitenanwendungen, die über IIS bereitgestellt werden?
quelle
projectName/index.html
, den ich von der URL in meinem Browser kopierehttp:/localhost/projectName/index.html
. Ergebnis - keine Auswirkung auf das Caching-Problem.web.config
Datei stattdessen im Stammordner Ihrer Site (Ordner, in dem sich Ihre Site befindet) hinzuzufügen und den Pfad zurück zu just zu ändern, um zuindex.html
sehen, ob dies funktioniert.Ich hatte das gleiche Problem und dies ist meine Checkliste:
<%Response.Expires=1440%>
in vielen Zeilen ASP-Code und es wurden alle anderen Einstellungen überwunden! In PHPsession_cache_expire
kann das gleiche tun .http-equiv="Cache-control"
in HTML - Header (Sie hat diesen Test bestanden!).Schließlich muss ich , dass oben in allen Situationen sagen, Auf Disable Cache in newtwork Tab in Chrome Konsole immer für mich gearbeitet , um eine frische Version von Seiten anzuzeigen aber das ist gut nur für die Zwecke und Besucher Debuggen wird nicht das tun!
quelle
Versuchen Sie in dem speziellen Fall, in dem Sie Google Chrome verwenden, Folgendes: Öffnen Sie die Entwicklungstools -> Gehen Sie zur Registerkarte "Netzwerk". Aktivieren Sie das Kontrollkästchen "Cache deaktivieren" und aktualisieren Sie anschließend die Seite.
Um jedoch Änderungen an Ihre Benutzer weiterzugeben, ohne dass diese die Seite usw. hart aktualisieren müssen, müssen Sie am Ende jeder referenzierten Datei Dateiversionen für Dateien anhängen, die sich häufig ändern (wie Sie bereits betont haben). Zum Beispiel:
Das
v=20b379f72a37
an das Ende angehängte ist ein automatisch generierter Datei-Hash des Dateiinhalts.quelle
Dies ist ein langer Weg - aber welche Art von Editor / IDE verwenden Sie? Welche Art von Änderungen nehmen Sie an Ihrer index.html vor?
Können Sie einige Beispiele für solche Änderungen angeben, die beim Speichern und Laden der Datei nicht berücksichtigt werden?
Ich möchte versuchen, Ihr Problem zu reproduzieren. Nach den Vorschlägen der Leute scheint das Problem nicht im Code selbst zu liegen. Ich vermute, dass es sich um ein Umweltproblem handelt, aber ich benötige weitere Informationen von Ihnen, um meinen Verdacht zu bestätigen.
quelle
Was Sie in HTML-Meta schreiben, ist eine Empfehlung an Browser, keine strenge Anweisung. Wenn das strikte Caching im Browser aktiviert ist, hilft dies nicht.
Die Lösungen sind gut beschrieben: https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/
Ich bevorzuge es auf der Serverseite, den Skripten die Version mit dem Datum der letzten Aktualisierung der Datei selbst hinzuzufügen.
Wo 1579780745150 ist Unix Timestamp aktualisiert die Datei myScript.js selbst. Es funktioniert nur mit eigenen Dateien, externe werden jedoch nicht benötigt. Am häufigsten im Dateinamen ist die Version.
quelle
Das ist wahrscheinlich sehr frustrierend und es hört sich nicht so an, als würden Sie etwas falsch machen.
Das Problem ist wahrscheinlich, dass etwas zwischen Ihrem Browser und der Skriptdatei, die Sie aufrufen, Caching ausführt.
Um festzustellen, was es ist, möchte ich fragen, wie Sie zur localhost-URL navigieren.
Beispiele:
Wenn Sie ausgeführt werden,
file://path/to/file.html
bedeutet dies, dass Sie nicht über einen Webserver / Proxy navigieren. Wenn jahttp://[something]/file.html
dann betreiben Sie eine Art Webserver, und das ist wahrscheinlich der Schuldige. Suchen Sie nach einer Einstellung, in der Sie das Caching deaktivieren können.Wenn Sie keinen Webserver verwenden und buchstäblich direkt zu einer lokalen HTML-Datei ohne Webserver navigieren, würde ich vorschlagen, dass der Browser der Schuldige ist. Wenn dies der Fall ist, würde ich vorschlagen, das Browser-Caching zu deaktivieren, wie es Martin Shishkov vorgeschlagen hat.
quelle
http://localhost/ProjectName/index.html
Wo diese Einstellung , wo Sie aufge Caching drehen kann sein kann?file://path/to/projectName/index.html
. Dadurch wird der Webserver aus der Gleichung entfernt. Informationen zur weiteren Verwendung von IIS und zum Beheben des Caches finden Sie in diesem Artikel: support.microsoft.com/en-us/help/247404/…Chrome führt diese Aktion aus, bei der, wenn sich die Datei nicht zu stark geändert hat und nicht sicher ist, was dies bedeutet, die "kompilierte" Cache-Version verwendet wird. Für HTML bedeutet es analysierter Don-Baum. Für JS vorkompilierten Code usw.
Es gibt normalerweise Möglichkeiten, dies zu beheben. Viele Frameworks verwenden Hash in Dateinamen, wie z.
main.md5hash.js
Weil das Ändern des Dateinamens den Cache ungültig macht.Dann bleibt Ihnen möglicherweise HTML nicht aktualisiert. Und um klar zu sein, ich bin mir nicht sicher, Sie können immer einen Kommentar mit einem zufälligen Blob hinzufügen ... wie ein Datum.
quelle
Basierend auf den Aktualisierungen Ihrer Antwort würde ich sagen, dass Ihr Problem durch IIS v7 verursacht wird , das Ihren PC- Speicher zum Zwischenspeichern verwendet, nicht Ihre lokale Festplatte, weshalb
Hard reload
und alle anderen Methoden scheinen nicht richtig zu funktionieren.Ich könnte mir 3 Lösungen vorstellen:
1. Behebung des IIS-Cache-Problems: (Nicht getestet, da ich keinen PC mit IIS habe.)
extension
Sie die Dateien ein , für die Sie den Cache deaktivieren möchten.aspx
, z. B. CSS, JS usw. (eine nach der anderen, denke ich?)Lösungsquelle - Lesen Sie mehr über den IIS 7-Cache
2. Verwenden einiger Alternativen zu IIS Es gibt einige, aber ich würde (basierend auf meinen Erfahrungen) WAMP oder XAMPP empfehlen. Beide bieten Ihnen eine bessere Entwicklungsumgebung und beide unterstützen Windows 7. Auch wenn Sie mit vertraut sind VS-Code Sie können einfach die Live Server- Erweiterung verwenden.
3. Verwenden Sie während der Entwicklung den Chrome Incognito- Modus. (Nicht sicher, ob es für IIS7 funktioniert)
quelle
.js
Dateien versucht ? Es hängt davon ab, welche Änderungen Sie vornehmen.