dbenzhuser: Zufälliges Bild per CSS-File

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

  1. Hallo,

    rufe die PHP-Datei so auf http://url.de?irgentetwas=irgendetwas

    dann sollte es gehen

    mfg
    Twilo

    1. 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

  2. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau