JavaScript Browser-Cache Problem

!n$t!nct

Lt. Junior Grade
Registriert
Mai 2005
Beiträge
283
Hi, habe folgendes Problem.

Ich habe eine PHP, in der wird durch ein Klick auf einen Button ein JavaScript ausgeführt, dies liest eine XML aus und zeigt mir den ausgelesenen Teil der XML auf derselben Seite, auf dem sich auch der Button befindet.
Der Teil wird jedoch durch Klick auf einen anderen Button (bzw. zwei Buttons, ein "Anmelde-" und ein "Abmeldebutton" geändert.
(Diese XML kommt von einem Server und sagt mir ob ein gewisser Status "An" oder "Aus" ist.)
Mein Problem ist jetzt, dass obwohl sich der Status in der XML geändert hat, der Browser mir noch den alten Status anzeigt. Nachdem ich z.B. im Firefox die "Privaten Daten lösche" funktioniert es und der Browser zeigt mir den neuen Status an - aber man soll nicht nach jedem Klick die ganzen Daten löschen müssen.

Ich habe es schon mit diversen Headermethoden (wie Cache-Control, Pragma, Expires .... no-cache usw.) in PHP und HTML ausprobiert aber davon funktioniert keine - diese sind auch uralt!
Die Lösung soll auch nicht browserseitig sein, da das ganze später überall anwendbar sein soll, also an verschiedenen PC's.

Meine Frage ist also, wie vermeide ich den Browsercache, bzw. wie schaffe ich es, dass der Browser das JavaScript immer wieder neu ausführt ohne den Namen des JavaScriptes oder der XML zu ändern?

Gibt es da vllt eine Möglichkeit, die Uhrzeit oder das Datum in das JavaScript einzubinden, damit der Browser erkennt, dass das Script ein neues Datum hat und es neu lädt?

Ich wäre sehr erfreut über viele hilfreiche Antworten, vielen Dank.

Euer !n$t!nct
 
Systemsteuerung -> Java (Doppelklick)

Temporäre Internet Dateien -> Einstellungen ->
- Häckchen bei "Temporäre Dateien auf dem Computer belassen" wegnehmen!

weiter unten "Dateien löschen" und mit OK bestätigen!


nun sollten alle offline inhalte entfernt sein und keine mehr hinzugefügt werden!

ich hoffe es funktioniert! = ) halte mich auf dem laufenden!

MFG
 
@pck_noob
Sowas kann und sollte man keinem User zumuten und verlangen.

@!n$t!nct
Was genau für Inhalte werden verändert? Text, Bild?

Wie siehts mit Ajax bzw. ähnlicher Funktionaliät aus?
Das java-script selber müsste ja nicht verändert werden und kann ja das gleiche bleiben und ruhig gecached werden, nur neuer Inhalt muss über das js vom Server geholt und aktualisiert bzw. in die Seite geschrieben werden.

Ich kenne Deinen code und die genaue Vorhgehensweise nicht.
Aber wenn das js nicht direkt die XML ausliest, sondern lediglich über eine php (mit ggf. Parametern) anfordert, welche wiederum dann serverseitig die xml whatever ausliest und zurückgibt, könnte es auch klappen.
Damit hatte ich noch keine Probleme.

Du kannst auch probieren das js-script selber direkt in die Seite zu schreiben oder Parameter/Links mit aktuellem Zeitstempel direkt von js bei klick an den Server mit zu übergeben.
 
Zuletzt bearbeitet:
@pck_noob
Danke für die Antwort, aber da muss ich Relict zustimmen, das kann ich echt keinem User zumuten.

@Relict
Ich danke dir auch für deine Antwort und werde bei Gelegenheit mal die Möglichkeiten ausprobieren und die Ergebnisse posten.

-------------------------------------------------------------------------------------------------

So die Lösung ist:

• http_request.setRequestHeader("Pragma", "no-cache");
• http_request.setRequestHeader("Cache-Control", "must-revalidate");
• http_request.setRequestHeader("If-Modified-Since", document.lastModified);
• http_request.send(null);
• http_return request.responseText;

in das JavaScript einfügen, das die/das XML ausliest und schon funzt es endlich!
 
Zuletzt bearbeitet:
!n$t!nct schrieb:
@pck_noob
So die Lösung ist:

• http_request.setRequestHeader("Pragma", "no-cache");
• http_request.setRequestHeader("Cache-Control", "must-revalidate");
• http_request.setRequestHeader("If-Modified-Since", document.lastModified);
• http_request.send(null);
• http_return request.responseText;

das funktioniert? wenn ja wärs ja krass, ich frag nämlich einfach immer meine Datei mit nem random parameter ab um das zu vermeiden...


also den request auf
Code:
"ajax.php?rnd="+Math.random()
umlenken, auch wenn die ajax.php mit dem "rnd" GET Parameter nix anzufangen weiß, so hab ich aber das Cache Problem gelöst, da es quasi immer eine andere URL ist die ich anfordere...
 
Zurück
Oben