Hi,
Du forderst eine Ressource an, die der Browser schon im Cache hat.
Soweit ist das ja auch korrekt. Allerdings dachte ich, das eine "reload page" Anweisung (das Recyclingsymbol im Opera) dies ueberschreibt.
Korrekt.
Aber was hat das mit dem XMLHttpRequest zu tun, den diese Seite im Hintergrund absendet?
Ich haette das vererbt.
sondern sogar ausdruecklich das Gegenteil
... aber das Gegenteil hast du nicht ausdrücklich verlangt (wie auch).
Doch, ich habe XMLHttpRequest ein "GET" mitgegeben, und sonst nichts.
warum macht Opera das, ist das Vorschrift?
Nein, aber Opera nutzt ein Feature von HTTP aus und ich finde es sehr logisch. Opera speichert Ressourcen (ohne das Caching verhindernde Header, mit Last-Modified oder ETag) zwischen und bei einer erneuten Abfrage wird erst einmal ein Conditional GET gesendet.
Ich bekomme also nicht, was ich will, sondern das, was Opera meint, das ich moechte?
Ja, wofuer halte ich denn von Microsoftsoftware so fleissig Abstand? ;-)
Wie kann ich denn nun dem Opera beibiegen, das er sich gefaelligst an die Anweisungen seines Herrn und Meisters halten soll?
Anders gefragt: Inwiefern gereicht einem Operas Verhalten zum Nachteil?
Ich weiss nicht, obe es der Allgemeinheit zumn Nachteil gereicht, mir reicht es schon, das es mir im Wege steht.
Ein Conditional GET ist in dieser Hinsicht unproblematisch. Wenn man mit XMLHttpRequest eine Datei vom Server beziehen will, bekommt man immer die aktuellste Version.
Auf die Gefahr hin, mich zu wiederholen: ich habe das nicht bestellt.
Auch in diesem Fall verläuft das Abfragen über XMLHttpRequest problemlos.
Nicht so ganz, wenn man responeXML() benutzt und davon ausgeht, mit DOM keine Probleme zu haben. Ich habe gerade 2 Stunden verplempert, bis ich darauf kam, das da kaum mehr als ein getElementsByTagName() funktioniert. Wenn ich wuesste wo ich nachschauen kann, waere ich versucht, nach einer Moeglichkeit suchen in einen Baum zu parsen (gibt's mindestens bei IE, Konqueror und Mozilla). Kurze Suche auf Opera.com ergab nicht sehr viel, eine intensive Suche mag erfolgreicher sein.
Wie meinst du das - du änderst die Datei, Opera sendet einen Conditional GET und Apache antwortet mit 304, aber anderem ETag? Wie soll das funktionieren?
Nein, war wohl eine Fehlbeobachtung, konnte ich zumindest nicht wiederholen.
Aber etwas anderes konnte ich beobachten: je nach Cacheeinstellung (die habe ich endlich gefunden, wenn auch nicht verstanden, aber daran scheint's wohlgelegen zu haben) bekomme ich wohl einen 200er zurueck, aber nicht die aktuelle Seite. Ich hatte die interne DTD entfernt (sowas mag Opera auch nicht) und responseTExt hat sie noch mitgeliefert. Das war sogar wiederholbar.
Was darüber hinaus das JavaScript angeht, so hatte ich nicht weiter getestet. Du versuchst allerdings, die DOM-HTML-Methode getElementsByName in einem generischen XML-Dokument anzuwenden, wo nur DOM Core möglich ist.
Das sowas nicht funktioniert habe ich mittlerweile auch festgestellt, aber das es in XML verboten ist, war mir neu. Warum ueberhaupt? Wo ist das dokumentiert? Kann man da irgendwo mehr drueber lesen?
so short
Christoph Zurnieden