Browser-Cachings im Webinterface immer deaktivieren

FatManStanding

Lieutenant
Registriert
Aug. 2021
Beiträge
721
Hi,

ich bastel gerade ein kleines Webinterface das einfach ein paar Schalter hat und die Werte die beim Start der Seite angezeigt werden sollen aus einer Datei liest. Das geht sehr gut. Problem ist nur, wenn ich testweise die Datei ändere und das Webinterface aktualisiere ändert sich dort nichts. Öffne ich die Seite in einem anderen Browser gehts. Das liegt wohl am Browser Cache, weil er noch eine alte Version lädt. Laut Gemini soll man das mit

script>
var script = document.createElement('script');
script.src = "ordner/javascript.js?v=" + new Date().getTime();
document.head.appendChild(script);
</script>

umgehen können indem die aktuelle Zeit als Version an den Pfad zum Laden der JS-Datei gehängt wird. Geht nur leider nicht. Gibt es denn keine Möglichkeit um einfach immer die Seite neu zu laden? Im Alltag begegnet einem das Problem beim normalen Server ja auch nicht.
 
Stichwort Cache-Busting, hat bei mir immer funktioniert. Alternativ kannst du im Inspector deines Browsers den Cache deaktivieren, geht dann halt nur bei dir aber ich ehme an es geht gerade um die dev.
Ansonsten kannst du die Seite mit CTRL+F5 hard-refreshen.
 
Kann man das nicht einfach über den Webserver regeln? Ich will nicht in jedem Browser den ich in den nächsten Jahren auf diversen Geräten nutze immer wieder diese Einstellungen machen. Das Problem fällt jetzt beim testen auf, wird könnte ja auch im produktiveinsatz passieren. Gibt es hier keine 'geht immer'-Lösung? Einfach immer die Seite neu laden?
 
Hat @0x8100 doch schon geschrieben. Der Server sollte die entsprechenden HTTP-Header setzen.
Da wir nicht wissen, wie deine Assets geserved werden, musst du halt schauen, wie das bei dir gesetzt wird.
Bei nginx ginge das über:
add_header Cache-Control "no-cache" always;

Es ist übrigens Bad Practice prinzipiell immer alles nicht zu cachen.
 
Webserver übermitteln doch auf Anfrage, wann sich der Inhalt zuletzt geändert hat. Es könnte sein, dass er nicht bemerkt, dass sich der Inhalt geändert hat, weil Inhalte teilweise aus einer externen Datei geladen werden. In dem Fall würde ein no-cache nicht helfen, weil der Browser dennoch beim webserver anfragt, ob die Antwort (die auch bei no-cache gespeichert werden darf) noch aktuell ist und der Webserver entsprechend mit 'ja' antwortet.
 
floq0r schrieb:
Alternativ kannst du im Inspector deines Browsers den Cache deaktivieren, geht dann halt nur bei dir aber ich ehme an es geht gerade um die dev.
Ansonsten kannst du die Seite mit CTRL+F5 hard-refreshen.
Es geht bestimmt nicht nur darum, dass es nur beim Fragesteller nicht funktioniert...
 
Zurück
Oben