kann man HTTP-Head Anfragen stellen in JS (Frameworks)?
Jannes
- javascript
1 ChrisB
Hallo zusammen,
ich habe für eine Fotoseite das Lightbox-Script, welches auf Prototype und Scriptaculous aufbaut eingesetzt. Das wird ja vielerorts gelobt und auch relativ oft genutzt. Trotz meiner praktisch nicht vorhandenen Javascript-Kenntnisse finde ich, das das Script nicht ganz so gut ist wie sein Ruf. Neben einigen kleineren Dingen die ich nicht ok finde, wie z.B. das der 'overlay'-Hintergrund sich nicht dynamisch der Fenstergröße anpasst (onresize), stört mich vor allem, das beim Durchblättern _immer_ das vorherige und das nächste Bild 'preloaded' werden. Was für ein Quatsch! Das ist nur notwendig, wenn die Lightbox-Ansicht gestartet wird, danach ist 100% der Fälle nur das vorausladen von _einem_ Bild notwendig. Denn wenn man auf next geklickt hat, hat man das previous ja gerade schon lange genug betrachtet.
Ich würde das gerne ändern, und frage mich, wie man mit Javascript abfragen kann, ob ein zuvor schon einmal geladenes Bild sich verändert hat oder nicht. In PHP würde ich dazu eine HTTP-Anfrage mit HEAD senden und in den meisten Fällen wohl 'not modified' zurück bekommen.
Alternativ dazu, abr nur als zweite Wahl, kann man ja jeden geladenen img-src in einm Array vorhalten, und nur dann 'vorladen' wenn ein bild dort nicht gelistet ist. Würde bei 'statischen' Bildern ausreichen.
Für Anregunegn & Hinweise dankbar,
Jannes
Hi,
[...] stört mich vor allem, das beim Durchblättern _immer_ das vorherige und das nächste Bild 'preloaded' werden. Was für ein Quatsch! Das ist nur notwendig, wenn die Lightbox-Ansicht gestartet wird, danach ist 100% der Fälle nur das vorausladen von _einem_ Bild notwendig. Denn wenn man auf next geklickt hat, hat man das previous ja gerade schon lange genug betrachtet.
Auch beim "Vorladen" eines bereits geladenen Bildes wird der Browser das Bild einfach aus dem Cache holen - sofern es mit entsprechenden Caching- und einem Last-Modified-Header ausgeliefert wird, und der Server dann bei einem entsprechenden Request auch einen 304 Not Modified als Antwort liefert.
Ich würde das gerne ändern, und frage mich, wie man mit Javascript abfragen kann, ob ein zuvor schon einmal geladenes Bild sich verändert hat oder nicht. In PHP würde ich dazu eine HTTP-Anfrage mit HEAD senden und in den meisten Fällen wohl 'not modified' zurück bekommen.
Den bekommt der Browser auch bei einem Conditional GET-Request, der einen If-Modified-Since-Header beinhaltet.
Mit einem zunaechst abgesetzten HEAD-Request muesstest du also selber noch einen GET-Request "nachschieben", sollte das Bild aus irgendeinem Grund nicht in einer aktuellen Version im Cache vorhanden sein.
Neben komplizierterer Scriptlogik wuerdest du also in diesem Falle auch noch einen zusaetzlichen HTTP-Request benoetigen.
Du versuchst m.E. gerade dein Script an einer Stelle zu "optimieren", an der eine Optimierung nicht nur gar nicht notwendig, sondern in der angedachten Art und Weise sogar kontraproduktiv waere.
MfG ChrisB