Robert Fischbacher <Fischbacher (AT) t-online (DOT) de> typed:
Quote:
Probierts mal aus: Nachdem das Bild in
bild1.src oder bild2.src geladen worden ist, es mal einfach
per Explorer umbenennen. Dann dem <img> das Bild aus dem
vermeintlichen Cache zuweisen. Bei mir kommt dann das schmucke
rote X, also kein Bild mehr da.
Was iss nu? Ist das Bild nun gecached oder nicht? |
Ja.
Quote:
Wobei mir grad beim Schreiben was einfällt: Kann es sein, dass
er beim FileSystem anders reagiert wie im HTTP-Protokoll? |
Nein.
Mit der Anweisung
veranlasst Du den Brauser lediglich, die zu dem Image-Objekt
"bild1" gehörigen Daten von dem URI (ob file: oder http: ist
in dieser Hinsicht unerheblich) zu besorgen. Ob er sie dann
in den Cache speichert oder nicht ist einstellungsabhängig.
Nehmen wir an, er habe die Daten im Cache zwischengespeichert.
Dann befindet sich dort in geeigneter Form ein Eintrag, der
den URI und die Bilddaten enthält.
Weist Du nun mit der Anweisung
Quote:
document.images.myPix.src=bild1.src; |
dem Element "document.images.myPix" neue Bilddaten zu, ist
das aus Sicht von JavaScript nichts weiter als das Zuweisen
einer Zeichenkette zu der Objekteigenschaft "src". Diese
Anweisung hat nichts magisches und die Anweisung
* document.images.myPix.src="bild1.gif";
würde exakt dasselbe bewirken! Insbesondere weiß JavaScript
gar nichts von der Existenz des Caches. Auch mit dieser
Anweisung veranlasst Du, wie oben, den Brauser lediglich,
Bilddaten zu besorgen. Wenn er sie im Cache findet und
(zumeist, einstellungsabhängig) nach einer Prüfung mittels
conditional GET, ob noch aktuell, benutzt er diese und das
Image-Objekt schmeißt ein load-Event.
Hast Du mittlerweile aber die Datei umbenannt, schlägt die
Prüfung, ob die Bilddaten noch aktuell sind fehl. Die Daten
werden dann vom Brauser aus dem Cache entfernt (oder als
nicht gültig markiert) und das Image-Objekt erhält keine
Daten und schmeißt ein error-Event.
Davon bekommt JavaScript dann erst wieder etwas mit, wenn
das error-Event geworfen wird. Mit all dem anderen zwischen
der Zuweisung der Zeichenkette(!) und dem Event hat es nix
am Hut, das ist des Brausers Geschäft.
Hoffe, das ist soweit nachvollziehbar? Dann nochmal die
Antwort auf obige Frage:
Quote:
Was iss nu? Ist das Bild nun gecached oder nicht? |
Ja, es ist gecached, aber Du forderst ein ganz anderes an:
Die Identität eines Bildes ist für den Brauser nicht durch
dessen Daten, sondern nur durch dessen URI plus Zeitpunkt
der Erstellung festzustellen. Anderer URI (hier: Name),
anderes Bild.
ciao, dhgm