Html img Bilder aktualisieren
Mikaaa
- html
- javascript
- sonstiges
0 Jörg Reinholz0 Mikaaa
Moinsen...
Hier mein Problem: Ich habe eine html seite mit bildern. Diese Bilder werden in unregelmässigen abständen durch neue bilder (mit gleichem namen) ersetzt. Kann ich meine seite so gestalten, das z.b javascript oder ähnliches... in regelmäßigen abständen kontrolliert, ob sich das bild erneuert hat und wenn ja, es dann neu zu laden? Für tipps bzw. Hinweise wäre ich sehr dankbar...
Gruss mikaaa
Moin!
Ich habe eine html seite mit bildern. Diese Bilder werden in unregelmässigen abständen durch neue bilder (mit gleichem namen) ersetzt. Kann ich meine seite so gestalten, das z.b javascript oder ähnliches... in regelmäßigen abständen kontrolliert, ob sich das bild erneuert hat und wenn ja, es dann neu zu laden? Für tipps bzw. Hinweise wäre ich sehr dankbar...
Im Prinzip: Ja.
Es bieten sich zwei Vorgehensweisen an:
1.) Du nutzt ggf. die Möglichkeit mit htaccess http-header zu senden und sorgst dafür, dass der Browser nicht einfach den cache benutzt, sondern neu validiert
2.) Du sorgst dafür, dass serverseitig jedesmal wenn ein neues Bild kommt eine weitere Datei mit einer "Prüfsumme" oder besser dem Änderungsdatum angelegt wird. Das kann
2.a) crc32 sein:
2.a.1.) in einer Linux-Shell:
crc32 datei.jpg > datei.crc;
2.a.2.) in PHP:
<?php
$crc=crc32(file_get_contents('datei.jpg'));
file_put_contents('datei.crc', $crc);
?>
2.b) oder besser das Dateidatum:
2.b.1.) in einer Linux-Shell:
stat -c "%Z" datei.jpg > datei.time
2.a.2.) in PHP:
<?php
clearstatcache(false, 'datei.jpg');
$t=filectime('datei.jpg');
file_put_contents('datei.time', $t);
?>
Die Zeit wäre hier wohl vorzuziehen. Dazu muss nämlich nicht die Datei gelesen werden.
Die Datei datei.crc oder besser datei.time kann man dann mit Javascript abholen (dabei wie im verlinkten Beispiel den Cache durch Übergabe eines "nutzlosen" Timestamps umgehen), den Inhalt mit dem des früheren Requests vergleichen und bei Änderungen das Bild (datei.jpg) selbst neu laden.
Das verlinkte Skript zeigt wie man hierbei die Nutzung eines Cache komplett verhindert. Wenn das Bild in großen Abständen erneuert wird könnte das durchaus ungünstig sein, dann würde ich womöglich zu einer Kombination mit der letzten Änderung (c-Time) greifen.
Jedenfalls wenn serverseitig die Möglichkeit eines Skriptens besteht.
Jörg Reinholz
Wow vielen dank für die schnelle antwort werd es gleich mal testen... gruss