• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JavaScript Dateien neu laden lassen

MadHatter

Neues Mitglied
Liebe anderen HTML und Javascript Fans,
ich habe folgendes Problem:
ändere ich die JavaScript Dateien meiner Internetseite, werden die von den Browsern meiner Besucher und auch von mir nicht neu geladen und der Skript vom Cache verwendet. Das ist insbesondere dann ein Problem, wenn ich mit PHP den Server verändere, aber der Client mit Javascript den Server nach alter Gewohnheit falsch anspricht.
Offensichtlich fragen die Browser nicht nach, ob eine neue Version vorhanden ist?

Wie löse ich nun dieses Problem? Was für Möglichkeiten gibt es? Wie kann ich dafür sorgen, dass die Browser immer dann die JavaScript Datei im Cache updaten, sobald eine neue Version verfügbar ist.

Vielen Dank
 
Das hängt von den im Header des Servers zurückgegebenen Cache-Einstellungen ab. Die kann man in der Serverkonfiguration selbst oder per PHP oder htaccess beeinflussen. Welche Eigenschaften dort aktuell an den Browser zurückgegeben werden, kann man z.B. mit LiveHTTPHeader im Firefox raus bekommen.

EDIT: noch eine Alternative: man könnte die externen JavaScript-Dateien auch mit einem Parameter versehen der einen Timestamp enthält, z.B. funktionen.js?timestamp=123456890. Diesen müsstest Du beim Laden jeder Seite natürlich neu setzen (z.B. per PHP). Dadurch würde der Browser jedes Mal eine andere URL haben und jedes Mal auch diese Datei neu laden. Hat natürlich einen riesen Nachteil für die Geschwindigkeit deiner Seite insgesamt, da diese Datei dann bei jedem Klick neu geladen werden würde.
 
Hmm, das mit dem Parameter ist gar keine so schlechte Idee. Ich könnte doch das Datum der letzten Änderung der JavaScript Datei mit Hilfe von PHP anhängen. So würde die JS-Datei nur neu geladen werden, wenn sie sich wirklich geändert hat. Müsste klappen, oder?
 
Ich hatte das gleiche Problem mit im Browser-Cache gehaltenen CSS Dateien und seither hänge ich bei Änderungen auch nur ein geändertes Datum im Stil von ?date=20111110 an und das Problem ist weg.
 
Zurück
Oben