Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] AJAX/PHP: Neu erstellte Grafik wird nicht dargestellt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] AJAX/PHP: Neu erstellte Grafik wird nicht dargestellt

    Hallo,

    ich habe folgenden Seitenaufbau: Zwei Auswahlfester um Jahr und Monat auszuwählen. Diese werden dann mittels HTTP-Request an ein PHP-Script geschickt, welches anhand der Werte eine Datenbank ausliest und dies grafisch umsetzt.

    Das klappt alles einwandfrei.

    Nur: Nach dem ersten Aufruf ändert sich die Grafik nicht mehr.

    Jetzt kann man auf den Gedanken kommen, dass die neu ausgewählten Daten nicht an das PHP-Script übergeben werden. Da liegt man leider falsch. Es wird auch eine neue Grafik erstellt - das habe ich im entsprechenden Ausgabeordner nachgeschaut.

    Aber scheinbar puffert der Browser die als erstes erstellte Grafik und stellte dann immer wieder diese dar und ignoriert, dass sich zwischenzeitlich jedoch die Grafikdatei geändert hat.

    Wenn ich der Grafikdatei einen zufälligen Dateinamen gebe, dann wird sie bei jeder Änderung von Monat / Jahr korrekt ausgegeben.

    Hänge ich jedoch direkt nach die Ausgabe (imagepng nutze ich nicht, da ich dort nur "wirre" Zeichen erhalte, daher Ausgabe mittels HTML-img-Tag) ein imagedestroy() in den PHP-Code, dann zeigt mir auch das img-Tag nichts an - obwohl das imagedestroy erst nach dem img-Tag erfolgt.

    Bin etwas verwirrt, was dieses Verhalten angeht.

    Wie kann man dieses Problem beheben?


  • #2
    Zitat von comlar Beitrag anzeigen
    Jetzt kann man auf den Gedanken kommen, dass
    ... es am Cache liegt, ja.

    Wie kann man dieses Problem beheben?
    Bspw. so:
    Wenn ich der Grafikdatei einen zufälligen Dateinamen gebe, dann wird sie bei jeder Änderung von Monat / Jahr korrekt ausgegeben.
    Üblich ist auch, den Datei-/Scriptnamen gleich zu lassen, und nur einen zufälligen GET-Parameter (bspw. aktuellen Timestamp) anzuhängen. Andere Ressource = kein Caching.

    Sinnvoller wäre es natürlich, wenn man das gleich bei der Ausgabe der Ressource über die passenden HTTP-Header zu regeln versucht. Allerdings müssen da nicht alle Clients mitspielen, je nach unterschiedlichen Einstellungen zum Caching, etc.
    Da ist obige Methode also ggf. sicherer.


    EDIT/P.S.:
    Zwei Auswahlfester um Jahr und Monat auszuwählen. Diese werden dann mittels HTTP-Request an ein PHP-Script geschickt, welches anhand der Werte eine Datenbank ausliest und dies grafisch umsetzt.
    Wozu denn an so einer Stelle überhaupt AJAX? (Weil's schick ist? D'oh!)
    Einfach per JavaScript die Adresse eines Bildobjektes auf ...?jahr=2010&monat=08 setzen, sollte es doch genauso gut tun.
    Damit hättest du auch schon je Jahr/Monat unterschiedliche Ressourcennamen - und damit, wenn die serverseitigen Daten gleich bleiben (nicht vom Request abhängig sind), auch gleich kein Cache-Problem mehr.

    Kommentar


    • #3
      Dann löse ich das wie von mir angedacht und von dir bestätigt: Über entsprechende Änderungen am Dateinamen.

      AJAX deshalb weil ich es einfach mal testen wollte. Damit habe ich bisher nahezu keine Erfahrung.

      Kommentar

      Lädt...
      X