Zufälliges Bild per CSS-File
dbenzhuser
- php
Servus!
Folgendes Problem: Ich muss über ein externes CSS-File ein zufälliges Hintergrundbild laden.
Wäre es direkt im HTML Quelltext könnte ich per PHP jedes mal ein anderes direkt reinschreiben. Ist aber nicht. Nun könnte ich natürlich auch meine CSS-Datei von PHP parsen lassen - will ich nicht. (ob das was bringen würde?)
Also verweise ich jetzt im CSS auf eine PHP-Datei, die per header(Location...) ein zufälliges Bild zurückliefert. Hier kommt das Problem auf: der Browser denkt gar nicht daran das Bild ständig auszuwechseln. Bei den ersten paar Reloads schaltet er noch durch, dann scheint er sich komplett auf seien Cache zu verlassen. Wenn nur Seiteninterne Links angeklickt werden ändert sich gar nüscht.
Wie kann ich ihm beibringen, dass er sich verdammt noch mal bei jedem Laden der Seite dieses eine Bild (und nur das) neu besorgen soll?
Oder gibts da noch viel bessere Lösungen, an die ich noch gar nicht gedacht habe?
Danke und Tschö,
dbenzhuser
Hallo,
rufe die PHP-Datei so auf http://url.de?irgentetwas=irgendetwas
dann sollte es gehen
mfg
Twilo
Servus
rufe die PHP-Datei so auf http://url.de?irgentetwas=irgendetwas
Leider nein, hatte ich auch schon ausprobiert (auch mit PHP jedesmal andere Parameter angehängt).
Tschö,
dbenzhuser
Hello,
Also verweise ich jetzt im CSS auf eine PHP-Datei, die per header(Location...) ein zufälliges Bild zurückliefert. Hier kommt das Problem auf: der Browser denkt gar nicht daran das Bild ständig auszuwechseln. Bei den ersten paar Reloads schaltet er noch durch, dann scheint er sich komplett auf seien Cache zu verlassen. Wenn nur Seiteninterne Links angeklickt werden ändert sich gar nüscht.
Wie kann ich ihm beibringen, dass er sich verdammt noch mal bei jedem Laden der Seite dieses eine Bild (und nur das) neu besorgen soll?
Du kannst ihn höflich bitten, das zu tun, indem Du ihm den "Last Modified: ..." Header mitsendest.
Dann fragt der Browser, wenn er denn auf "Auto" oder "Immer" eingestellt ist, beim nächsten Zugriff erstmal nach, ob das Bild auf dem Server denn neuer ist. Wenn Du da dann nicht einfach mit "Not Modiefied..." antwortest, sondern das neue Bild auslieferst mit einem neuen "Last Modified ..." dann könnte das klappen.
I.d.R. will man bei CMS ja genau das Gegenteil errreichen, dass nämlich nicht jedes Mal alle Bilder neu ausgeleifert werden.
$last_modified = @gmdate('D, d M Y H:i:s',@filemtime(PICPATH.$filename)).' GMT';
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
{
// parse header
$if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']);
if ($if_modified_since == $last_modified)
{
// the browser's cache is still up to date
header("HTTP/1.0 304 Not Modified");
header("Cache-Control: max-age=86400, must-revalidate");
return true;
}
}
Kleiner Ausschnitt aus meinem CMS.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom