Khan: JPG auf Webpage bei jedem Besuch automatisch aktualisieren, also kein Cookie

Moin Kollegas! Habe auf einer Webseite ein JPG Bild, dieses Bild wird wöchentlich vom Betreiber der Webpage erneuert.

Nun soll dieses Bild bei jedem Besuch erneut geladen werden, also soll nicht im Cookie gespeichert werden.

Dafür gibt es doch bestimmt eine Lösung und vielleicht kennt die jemand.

MfG Khan

  1. Hallo Khan,

    Nun soll dieses Bild bei jedem Besuch erneut geladen werden, also soll nicht im Cookie gespeichert werden.

    Du meinst Cache.

    Dafür gibt es doch bestimmt eine Lösung und vielleicht kennt die jemand.

    Ja, den Dateinamen ändern.

    Bis demnächst
    Matthias

    --
    Rosen sind rot.
    1. Hallo Matthias,

      geht - setzt natürlich ein CMS voraus oder jemanden, der nach dem Upload das HTML anpasst.

      Alternativ kann man serverseitig HTTP Header setzen, die mithelfen.

      Die am wenigsten störanfällige, dafür mehr Datenverkehr produzierende Möglichkeit wäre ein Cache-Control Header mit einem max-age=n (n in Sekunden, z.B. 28800 Sekunden = 8 Stunden. Dann wird für einen User an einem neuen Tag sicher ein neues Bild geladen. Das kann man für einen bestimmten Ordner und Dateityp per .htaccess einstellen. Nachteil ist: Wenn ein User täglich die Seite aufruft, bekommt er täglich das gleiche Bild einmal geliefert. Je nach Schlafverhalten der Anwender ist dann am Tag des Bildwechsels nicht für alle Anwender gleichzeitig das neue Bild da.

      Ein Expires Header mit einem entsprechenden Datum wäre auch denkbar, aber dann muss der Betreiber auch liefern. Wenn nämlich nach dem eingestellten Expires Datum kein neues Bild da ist, lädt der Browser das alte Bild neu und merkt es sich für eine Woche...

      Wenn die Seite über ein handgemachtes PHP-Script ausgeliefert wird, kann es das Dateidatum der angezeigten Datei ermitteln und daraus einen Code generieren (z.B. Dateidatum), der als Query-Parameter an die src-Angabe in img Element angehängt wird. Sobald das Bild geändert wird, ändert sich der Code und der Browser macht einen neuen GET.

      Wenn die Seite aus statischem HTML besteht, geht das natürlich nicht. Dann muss es Matthias' Ansatz sein oder ein Cache-Control Header.

      Rolf

      --
      sumpsi - posui - clusi
      1. Dateinamen aendern geht in diesem Fall nicht, der Betreiber kennt sich mit Code nicht aus. Habe dem einen WebFTP Zugang eingerichtet der nur auf diese eine Datei zeigt und dort man eine aktualisierte hochladen kann.

        Das mit den Dateiatributen macht sinn, das halt nur umzusetzen...

        Matthias Sorry wegen dem Doppelpost, der erste wurde mir vorhin nicht angezeigt, so dachte ich, ich habe vergessen abzuschicken...

        1. Hello,

          es reicht, wenn das Frontend mit JS immer die Zeit als Parameter anhängt,bevor die URL des Bildes dann aufgerufen wird.

          Liebe Grüße
          Tom S.

          --
          Es gibt nichts Gutes, außer man tut es!
          Das Leben selbst ist der Sinn.
          1. @@TS

            es reicht, wenn das Frontend mit JS immer die Zeit als Parameter anhängt,bevor die URL des Bildes dann aufgerufen wird.

            Dann wird das Caching aber komplett umgangen und das Bild jedes Mal neu geladen.

            Das mag zwar als so gewollt im Titel stehen, aber nicht in der Problembeschreibung.

            LLAP 🖖

            --
            “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
            1. Dann wird das Caching aber komplett umgangen und das Bild jedes Mal neu geladen.

              Das mag zwar als so gewollt im Titel stehen, aber nicht in der Problembeschreibung.

              ???

              Nun soll dieses Bild bei jedem Besuch erneut geladen werden, also soll nicht im Cookie gespeichert werden.

              Es muss nicht jedesmal neu geladen werden. Wenn ich nur Tag und Stunde anhänge, kommt es in derselben Stunde aus dem Cache:

              <img src="image.jpg?t=2017112213" ... />
              

              Linuchs

              1. @@Linuchs

                Dann wird das Caching aber komplett umgangen und das Bild jedes Mal neu geladen.

                Das mag zwar als so gewollt im Titel stehen, aber nicht in der Problembeschreibung.

                ???

                „… dieses Bild wird wöchentlich vom Betreiber der Webpage erneuert.“

                Es muss nicht jedesmal neu geladen werden. Wenn ich nur Tag und Stunde anhänge, kommt es in derselben Stunde aus dem Cache:

                „… dieses Bild wird wöchentlich vom Betreiber der Webpage erneuert.“

                LLAP 🖖

                --
                “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
        2. Hallo Khan,

          kannst oben auswählen: Gelesene Threads anzeigen / Gelesene Threads ausblenden. Wenn er im "ausblenden" Modus ist, dann siehst Du einen Thread nicht mehr wenn sich nichts dran ändert.

          Ist die Seite denn statisch oder PHP?

          Rolf

          --
          sumpsi - posui - clusi
  2. ETags bilden eine weitere Möglichkeit und sofern du einen gebräuchlichen Webserver hast, wohl auch die einfachste Methode für dich. Bei Apache kannst du das bspw. mit der FileTag-Direktive erzwingen. Der Server übertragt dann zusammen mit dem Bild einige Metadaten, zum Beispiel das letzte Änderungsdatum der Datei. Ein Browser der so ein Bild schon einmal runtergeladen hat, fragt den Server dann vor dem nächsten Download, ob sich das ETag geändert hat und der Server antwortet dann mit einem schmalen "Nope" oder mit einem "Jep" und dem neuen Bild im Anhang.

    1. Hallo 1unitedpower,

      danke, wieder was aufgefrischt (gelernt nicht, das hab ich irgendwann sicher schonmal gelesen, aber verdrängt :) ).

      Ich würde dann noch aber das ETag mit einem kurzlaufenden max-age im Cache-Control kombinieren, um Server-Requests zu sparen. Die fressen zwar nicht viel Brot, aber prinzipiell ist jeder Request einer zu viel...

      Rolf

      --
      sumpsi - posui - clusi
    2. Hello,

      (+)

      ETags bilden eine weitere Möglichkeit und sofern du einen gebräuchlichen Webserver hast, wohl auch die einfachste Methode für dich. Bei Apache kannst du das bspw. mit der FileTag-Direktive erzwingen. Der Server übertragt dann zusammen mit dem Bild einige Metadaten, zum Beispiel das letzte Änderungsdatum der Datei. Ein Browser der so ein Bild schon einmal runtergeladen hat, fragt den Server dann vor dem nächsten Download, ob sich das ETag geändert hat und der Server antwortet dann mit einem schmalen "Nope" oder mit einem "Jep" und dem neuen Bild im Anhang.

      ... und dem neuen ETag.

      Liebe Grüße
      Tom S.

      --
      Es gibt nichts Gutes, außer man tut es!
      Das Leben selbst ist der Sinn.