lina-: Problem mit "back" und dynamischem bild

Hallo,

Ich habe ein Problem mit der back-Funktion des Browsers und einem dynamisch erstellten Bild auf meinen JSP-Seiten.

Zunächst einmal die Struktur der anzuzeigenden Seite "seite.jsp?orgaeinheit=1" (diese Seite ist immer gleich - je nach id wird ein anderer Inhalt - ganz speziell ein anderes Bild generiert).

Diese Seite enthält die Einbindung der Grafikdatei:
<img src="<%=lnk_grafik%>" border="0" usemap="#Symbole">

die JSP-Variable lnk_grafik ist "grafik.jsp", so daß die JSP-Datei "grafik" als Bild eingebunden ist.
Dieser Grafik-Datei sieht folgendermaßen aus:

<%@ page contentType="image/jpeg" %>
<%@ page import="java.awt.*,java.awt.image.*, com.sun.image.codec.jpeg.* " %>
<jsp:useBean id="orgaeinheit" scope="request" class="mein.Paket.Zeichner" />
<%
  //cachen verhindern
  response.setHeader("Pragma", "no-cache");
  response.setHeader("Cache-Control", "no-cache");
  response.setHeader("Cache-Control","no-store" );
  response.setDateHeader("Expires", 0);
  ServletOutputStream sos = response.getOutputStream();
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( sos );
  BufferedImage image = orgaeinheit.getImage();
  encoder.encode( image );
%>

Wenn ich nun in den Seiten vorwärts navigiere funktioniert alles super: Seite wird neu geladen, Bild wird neu generiert und alles ist schön.
Leider leider scheint die back-Funktion des Browsers aber nicht mit dem Bild zurecht zu kommen. Die richtige Seite wird zwar geladen (erkennbar an der Überschrift) aber das Bild ist jeweils noch das der vorherigen Seite. Erst bei einem Reload wird die richtige Grafik gezeigt.
Nun dachte ich mir: bei jedem Seitenaufruf einfach ein Java-script-"reload()" sollte es ja tun ;) Das Ergebnis war eine nette Endlosschleife an reloads *G*

Ich nehme ja fast an, dass hat irgendwas damit zu tun, dass das Bild nicht gecacht ist? Ohne geht es aber leider nicht, da sonst die Navigation nach vorne nicht geht (in diesem Fall ist es genau andersrum --> das Bild der nächsten Seite wird erst bei einem Reload richtig angezeigt)

Hat jemand Ideen und/oder Lösungen zu diesem Problem?

  1. Nachtrag:

    Natürlich könnte ich den Usern einen Button "reload" anbieten - aber das möchte ich nicht.
    Automatisch immer das richtige Bild wär schön... Der User kann ja nicht immer wissen, ob er jetzt das richtige oder das falsche Bild vor Augen hat...

  2. hi,

    Ich habe ein Problem mit der back-Funktion des Browsers und einem dynamisch erstellten Bild auf meinen JSP-Seiten.
    [...]
    Leider leider scheint die back-Funktion des Browsers aber nicht mit dem Bild zurecht zu kommen.

    natürlich tut sie das.

    Die richtige Seite wird zwar geladen (erkennbar an der Überschrift) aber das Bild ist jeweils noch das der vorherigen Seite. Erst bei einem Reload wird die richtige Grafik gezeigt.

    works as designed, würde ich sagen.

    Ich nehme ja fast an, dass hat irgendwas damit zu tun, dass das Bild nicht gecacht ist?

    im gegenteil - _weil_ das bild gecached wurde, wird dir immer noch die "alte" version angezeigt.

    Hat jemand Ideen und/oder Lösungen zu diesem Problem?

    deine ganzen header bgzl. des erwünschten cache-verhaltens beziehen sich m.E. nur auf das HTML-dokument.
    sorge dafür, dass auch die bildressource mit entsprechenden, das caching für unerwünscht erklärenden headern ausgeliefert wird.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hallo lina-

    die JSP-Variable lnk_grafik ist "grafik.jsp", so daß die JSP-Datei "grafik" als Bild eingebunden ist.

    Das bedeutet, dass es für den Browser immer die gleiche Grafikresource ist.
    Warum sollte er diese dann beim "back" neu laden?

    Hat jemand Ideen und/oder Lösungen zu diesem Problem?

    Du könntest dein Script dahingehend ändern, dass die Grafik jeder Seite für den
    Browser jeweils eine andere ist (angehängte Parameter dürften reichen).

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!