Andreas: Browser Cache für einzelne Grafiken abschalten

Hallo!

Ich suche nach einer Möglichkeit dem Browser das Cachen von einzelnen oder allen Grafiken zu verbieten - und zwar durch META-Tags oder zusätzliche Parameter im IMG-Tag.

Natürlich sollte das für alle Browser funktionieren, macht aber nix, wenn es nur eine MSIE-kompatible Lösung gibt.

Die META-Tags zum Abschalten des Cachings für HTML-Seiten habe ich schon probiert - klappt auch wunderbar, nur leider nicht für Grafiken, wenn ich das richtig gesehen habe. Das Problem ist: Auf einer Seite wird eine Grafik geladen, die immer den gleichen Dateinamen hat, aber bei jedem Aufruf anders aussieht (wie z.B. bei einer grafischen Statistik)... Leider merken sich die Browser die URL der Grafik und somit wird sie beim nächsten Aufruf der Seite nicht nochmals geladen.

Ich bin für jede Hilfe dankbar!

Viele Grüße
Andreas

  1. hi Andreas

    afaik ist es nur möglich entweder die ganze seite oder nichts auf der seite in bzw aus dem cache zu bekommen.

    so long
    ole
    (8-)>

    --
    Die Summe aller menschlichen Intelligenz ist eine Konstante.
    Das Problem ist das Bevölkerungswachtum...
    sh:( fo:) ch:| rl:° br:& n4:° ie:% mo:} va:| de:] zu:| fl:( ss:) ls: js:|
    If you can't beat 'em...eat 'em !
  2. Hi Andreas

    Die META-Tags zum Abschalten des Cachings für HTML-Seiten habe ich schon probiert - klappt auch wunderbar, nur leider nicht für Grafiken, wenn ich das richtig gesehen habe. Das Problem ist: Auf einer Seite wird eine Grafik geladen, die immer den gleichen Dateinamen hat, aber bei jedem Aufruf anders aussieht (wie z.B. bei einer grafischen Statistik)... Leider merken sich die Browser die URL der Grafik und somit wird sie beim nächsten Aufruf der Seite nicht nochmals geladen.

    Dein Server muss die Bilder mit dem Header
    cache-control:no-store ausliefern. Wie man das jetz praktisch einstellt weiß ich nicht. Mir fällt als Möglichkeit höchstens ein, ein Script zu schreiben, dass die Header zu der Grafik hinzufügt.

    Schöne Grüße

    Johannes

    --
    Stop bushism
    ss:| zu:) ls:[ fo:) de:] va:) ch:] sh:( n4:& rl:( br:^ js:| ie:{ fl:( mo:|
    Selfcode bei http://emmanuel.dammerer.at/selfcode.html
    1. Hi Johannes,

      vielen Dank - das dürfte DIE Lösung sein! Ich dachte gar nicht an eine serverseitige Möglichkeit...

      Die Grafik wird sowieso von einem Script ausgegeben - also ist eine zusätzliche Information im Header kein Thema für mich, weil ich dafür den Apache nicht umkonfigurieren muss.

      Ciao
      Andreas

    2. Hi Johannes,

      Dein Server muss die Bilder mit dem Header
      cache-control:no-store ausliefern.

      und was nützt das, wenn mein Browser auf "Validate: never" konfiguriert ist?

      Der Server hat lediglich beratende Funktion, was die Behandlung von HTTP-Content angeht.

      Mir fällt als Möglichkeit höchstens ein, ein Script zu schreiben, dass die Header zu der Grafik hinzufügt.

      Apache: mod_headers. Die technische Umsetzung wäre nicht das Problem - es funktioniert halt nur nicht zuverlässig.

      Viele Grüße
            Michael

      --
      T'Pol: I apologize if I acted inappropriately.
      V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
      (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
      Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
      1. Hi Michael

        Dein Server muss die Bilder mit dem Header
        cache-control:no-store ausliefern.

        und was nützt das, wenn mein Browser auf "Validate: never" konfiguriert ist?

        Man kann nie verhindern, dass irgend ein Browser oder was auch immer die Daten im Cache speichern. Mann kann ihm aber sagen, dass er die Daten nicht speichern soll. Wenn er es trotzdem tut, ist das ein Problem den Besuchers, nicht des Seitenerstellers.

        Schöne Grüße

        Johannes

        --
        ss:| zu:) ls:[ fo:) de:] va:) ch:] sh:( n4:& rl:( br:^ js:| ie:{ fl:( mo:|
        Selfcode bei http://emmanuel.dammerer.at/selfcode.html
  3. Am einfachsten ist es, wenn man an die Bildadresse eine Zufallszahl anhängt.
    $zahl = rand(); // z.B.:1234
    bild.jpg?$zahl
    Ausgegeben wird: bild.jpg?1234
    Und die Datei wird jedesmal neu geladen

    1. Hi oFb,

      Am einfachsten ist es, wenn man an die Bildadresse eine Zufallszahl anhängt.
      $zahl = rand(); // z.B.:1234
      bild.jpg?$zahl
      Ausgegeben wird: bild.jpg?1234
      Und die Datei wird jedesmal neu geladen

      als kleine Verbesserung zu diesem (einzig wirksamen) Vorschlag würde ich noch "Zufall" durch "autoincrement" ersetzen - das hier ist ein klassischer Anwendungsfall für einen Wertegenerator, wie zwar nicht die konkreten Werte wichtig sind, aber deren Eigenschaft, eindeutig zu sein.

      Ich würde also beispielsweise die aktuelle Uhrzeit auf "hinreichend genau" (Sekunden dürften in diesem Fall reichen) als Parameter anhängen, um sicherzustellen, daß das serverseitige Skript nicht "schlecht würfelt".

      Viele Grüße
            Michael

      --
      T'Pol: I apologize if I acted inappropriately.
      V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
      (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
      Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.