Guma: Cache -> Nach Upload eines Bildes wird voriges Bild geladen

Hallo zusammen, ich habe ein PHP-Uploadformular, bei dem ein Bild hochgeladen werden kann. Nach dem Upload wird das Bild angezeigt (Seite wird dazu neu geladen). Wird jetzt ein anderes Bild gewählt und hochgeladen wird das alte Bild ersetzt und bekommt den gleichen Dateinamen. (bild_01.jpg) Leider wird nach dem erfolgreichen Upload noch das alte Bild angezeigt (Browser: IE)

Also habe ich versucht den Cache unberücksichtigt zu lassen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META http-equiv=imagetoolbar content=no>
<META http-equiv=Pragma content=no-cache>
<META http-equiv=Cache-Control content="no-cache, must-revalidate">

Evtl liegt hier der Fehler?!

Wer kann hier weiterhelfen?

Guma

  1. Hi Guma,

    Hallo zusammen, ich habe ein PHP-Uploadformular, bei dem ein Bild hochgeladen werden kann. Nach dem Upload wird das Bild angezeigt (Seite wird dazu neu geladen). Wird jetzt ein anderes Bild gewählt und hochgeladen wird das alte Bild ersetzt und bekommt den gleichen Dateinamen. (bild_01.jpg) Leider wird nach dem erfolgreichen Upload noch das alte Bild angezeigt (Browser: IE)

    M.E. kann man den Cache ausschalten wie man will, die Bilder werden nicht zuverlässig ersetzt, sofern im Browser keine entsprechenden Einstellungen gemacht werden.
    Ich hatte dieses Problem vor einiger Zeit und ich habe es gelöst indem ich der Seite, die das Bild dann aufruft einen Sessionstring mitgegeben habe, dadurch hatte es funktioniert. Ich vermute, weil der Browser denkt, dass es dynamische Werte sind, die kommen und er so auf jeden Fall die Daten neu laden muss.
    Ob das der suabere Weg ist weiß ich nicht, auf jeden Fall praktikabel.

    ciao
    romy

    1. Danke Romy, so habe ich es auch gemacht und ...

      ... funktioniert. Wie sauber das ist weiß ich nicht.

      Danke jedenfalls. Guma

    2. Moin!

      M.E. kann man den Cache ausschalten wie man will, die Bilder werden nicht zuverlässig ersetzt, sofern im Browser keine entsprechenden Einstellungen gemacht werden.

      Den Cache kann man ja sowieso nicht mit den HTML-Metaelementen ausschalten, sondern nur mit beim Bild mitgesendeten HTTP-Headern.

      Das ist aber nicht ganz so einfach zu realisieren, wenn das Bild tatsächlich eine echte Datei ist, die direkt vom Webserver ausgeliefert wird, und nicht durch PHP geleitet wird. Die einzige Möglichkeit, dann auf die HTTP-Header Einfluß zu nehmen, ist mit .htaccess - sofern der Provider das erlaubt.

      Das gilt dann allerdings für alle Bildrequests - was auch nicht unbedingt erwünscht ist, wenn das Bild, sobald es einmal als korrekt hochgeladen betrachtet wird, dann dauerhaft genutzt werden soll.

      Ich hatte dieses Problem vor einiger Zeit und ich habe es gelöst indem ich der Seite, die das Bild dann aufruft einen Sessionstring mitgegeben habe, dadurch hatte es funktioniert. Ich vermute, weil der Browser denkt, dass es dynamische Werte sind, die kommen und er so auf jeden Fall die Daten neu laden muss.

      Eine URL mit Parameter ist was anderes als eine URL mit einem anderen Parameter, oder ohne Parameter. Der Browser weiß nichts von "dynamischer" Seitenerstellung, er lädt eine komplett neue URL (von der ein Teil identisch ist mit einer URL, die er vorher schon geladen hatte). Lädt man die gleiche URL mit dem _gleichen_ Parameter neu, würde auch wieder der Cache greifen.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."