Automatische Aktualisierung von Bildern
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
all
aufwand
baustelle
besserung
bild
binde
button
check
code
dank
datei
header
markup
not
opus
problem
setzen
testen
url
weben
-
Hallo zusammen,
ich habe eine Frage bzgl. dem automatischen Aktualisieren von Bildern auf der Homepage. Wir haben im Mitgliederbereich 4 Bilder von Webcams eingebunden. Diese werden von der Webcam via FTP in einen Ordner gespeichert - haben immer den gleichen Namen & neu überschreibt alt. Diese werden dann lediglich in die HP eingebunden.
Das Problem ist, im Edge und Fire Fox funktioniert die automatische Aktualisierung der Bilder. Im Opera und Chrome macht er zwar den Refresh, aber die Bilder werden nicht aktualisiert. Sprich der Cache wird nicht gelöscht wie eigentlich angegeben (hoffe das Stimmt so wie ich es formuliere)
Ich habe folge Meta Tags im Header dieser einen Seite eingebunden:
<meta http-equiv="cache-control" content="no-store, no-cache, must-revalidate, max-age=0" />
<meta http-equiv="refresh" content="5">
Die 5 sekunden sind fürs Testen gewollt, die Bilder werden dann im Live System nicht so oft aktualisiert.
Vielleicht hat jemand eine Idee, wie ich chrome und Opera dazu bekomme auch für diese eine Seite den Cache neu zu laden....
Danke
Reinhold
Beitrag zuletzt geändert: 28.3.2018 20:53:06 von mbc-vogelweide -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die Meta Tags sind dafür recht ungeeignet:
Caching headers are unreliable in meta elements; for one, any web proxies between the site and the user will completely ignore them. You should always use a real HTTP header for headers such as Cache-Control and Pragma. ### Chrome and Firefox specifically does not work with these as you would expect, if at all.
Über PhP ist das ganze besser:
<?php header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?>
Beitrag zuletzt geändert: 28.3.2018 21:03:29 von horstexplorer -
Hi,
erstmal danke für die Antwort. Ich habe es jetzt mal in den PHP Code eingefügt. Aber gleiches Bild. IE und FF aktualisieren, Opera und Chrome nicht.
Gruß Reinhold -
Ich empfehle für solche Aufgaben Ajax.
Relevant wäre dann:xmlhttp.setRequestHeader('Cache-Control', 'no-cache'); xmlhttp.send();
Für meta-tags siehe:
http://wiki.selfhtml.org/wiki/HTML/Kopfdaten/meta
<meta http-equiv="expires" content="0">
oder
<meta http-equiv="expires" content="Sat, 12 Jun 2010 12:00:00 GMT">
oder ergänze den Code von horstexplorer noch mitheader("Expires: Sat, 12 Jun 2010 12:00:00 GMT");
Beitrag zuletzt geändert: 28.3.2018 23:41:20 von timebandit -
Hi,
da ich mich mit der Materie nicht sonderlich auskenne, habe ich nun folgendes Versucht. Ich habe den Request via Button zum Testen eingebunden - hat nichts geändert. Auch den Code mit dem Header angepasst - ebenfalls keine Besserung.
so habe ich den Button belegt:
<button type="button" onclick="loadDoc()">Refresh</button> <script> function loadDoc() { var xhttp = new XMLHttpRequest(); xhttp.setRequestHeader('Cache-Control', 'no-cache'); xhttp.send(); } </script>
header("Expires: Sat, 12 Jun 2010 12:00:00 GMT");
Gruß Reinhold -
Die Html-Seite und das eingebundene Bild werden vom Cache unabhängig voneinander behandelt.
Egal, ob man nun mit PHP irgendwelche Header setzt oder Meta-Tags ins Markup einfügt, das wirkt sich alles nur auf die Html-Datei aus, während das Bild munter weiter im Cache gespeichert bleibt.
Das Ziel ist also, den no-cache Header für das Bild zu setzen und nicht für die Html-Datei.
Am einfachsten geht das in einer .htaccess Datei:
^^ Der Dateiname muss noch angepasst werden.<Files bilddatei.jpg> Header add Cache-Control "no-cache" </Files>
Theoretisch könnte man auch PHP verwenden um das Bild auszuliefern und dabei die Header zu setzen, einfacher dürfte aber der Weg über .htaccess sein. -
Was für ein unnötiger Aufwand. Vor allem, da es ja nicht um die Seite an sich geht. Es geht um ein eingebundenes Bild.
Wenn du eh die komplette Seite neu lädst binde das Bild einfach als "image.bla?t=<?=microtime();?>" ein.
Zumindest solange es mit .php endet. Ansonsten kannste auch andere Dateien (wie mit der Endung .html) via "AddHandler" in der .htaccess dem PHP-Parser zuweisen. -
muellerlukas schrieb:
Da hast du sicherlich recht. Berücksichtigt man den entstehenden Traffic, dann ist Ajax die bessere Variante.
Was für ein unnötiger Aufwand. Vor allem, da es ja nicht um die Seite an sich geht. Es geht um ein eingebundenes Bild.
.
Ich habe auf meiner Baustellehttps://www.timebandit.lima-city.de/ajax.php
einen Lösungsvorschlag für Reinholds Problem. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage