Cache Control via PHP header()

S

sevY

Hi,

ich habe eine Website geschrieben, welche eine Livewebcam aus einem Tonstudio enthält.

Das funktioniert folgendermaßen:

1.) Im Tonstudio ist eine IP-Webcam, die im 10 Sekunden Takt aktualisiert und ein Bild auf den Webspace lädt (…Real Streaming mit IP-Cam ist in Arbeit… nicht das jetzt jemand wegen des Traffics/Serverlast meckert… die FTP Verbindung ist übrigens persistent).

2.) Auf der Website befindet sich ein Flashfilm, der in einem 10 Sekunden Interval immer ein Bild mit dem Namen webcam.jpg per loadMovie() lädt (nicht immer ganz synchron… aber das wird ebenfalls mit der unter 1.) genannten Lösung verbessert).

Folgendes Problem:

Unter sämtlichen MacOS Browsern funktioniert es, das immer ein neues Bild angezeigt wird, da folgende Funktion das Caching verhindert:

PHP:
<?php
//Caching verhindern
header("Expires: Mon, 26 Jul 1970, 00:00:00 GMT");
header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

//Als XHTML ausliefern
header('Content-Type: application/xhtml+xml; charset=utf-8');
header('Vary: Negotiate,Accept');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta name="description" content=".........." />
<meta name="keywords" lang="de" content="......." />
<meta name="content-language" content="de">
<meta name="robots" content="index,follow" />
<meta name="revisit-after" content="7 days" />
<meta name="author" content="..........." />
/usw. …

Unter Windows IE 6 und Opera wird das Bild webcam.jpg leider cached.
Ich habe in der MS Knowledgebase gelesen, das der IE nicht unbedingt auf das <meta http-equiv> Tag für Cache-Control hört und generell die header() Methode mittels PHP zu bevorzugen ist.
http://support.microsoft.com/kb/q234067/

Unter MacOS funktioniert es ja auch wunderbar… daher habe ich dann auch auf das <meta-http-equiv> Tag verzichtet.

Scheinbar ist der IE 6 eine Ansammlung von Bugs…
http://www.web-caching.com/msiebugs.html

Naja… das Problem muß aber gelöst werden.

Hat jemand Vorschläge?

Viele Grüße

Yves
 
Zuletzt bearbeitet von einem Moderator:
Was passiert denn, wenn Du den meta-Tag wieder einfügst? Ansonsten kann man mit JavaScript den Cache leeren. Allerdings haben das einige Leute ja auch ausgeschaltet.
 
Dumme Idee, aber vielleicht einen Zufallsstring reinschreiben? Oder die Uhrzeit? Dann ist die Seite ja aktualisiert, und der Browser wird sie neuladen wollen :)
 
Hallo,

auch in der Version 6.x hat der Internet Explorer einen Fehler mit "Caching". Standardmäßig muß in den Einstellungen der Cache von "Automatisch" auf "Bei jedem Zugriff neu laden" gestellt werden, dann Internet Explorer komplett beenden und neu starten.
Leider haben das viele nicht eingestellt.

Versuche mal
header("pragma: no-cache");

von
Code:
<meta http-equiv="pragma" content="no-cache">

Viele Grüße
Michael
 
Hmm, hat alles nicht geholfen.

Aber:

Ich hänge dem Bildnamen im LoadMovie() Befehl in Flash einfach einen Timestamp an…

loadMovie('webcam.jpg?[ddmmyyyyhhmmss => z.B 28032005181224]);


Yves
 
Zurück
Oben Unten