UlrichW: Seite nach Änderung resetten

Hallo, ich habe folgende Frage (bin selbst kein Entwickler):

Nach Änderungen unserer Webseite werde ich vom Entwickler aufgefordert, die Seite zu reloaden, ggf. sogar einen "harten" Reload via F12 und "Cache leeren und vollständig aktualisieren" durchzuführen.

Schön und gut, ich kann das tun. Die Besucher unserer Webseite werden es nicht tun. Wie kann man das Problem so lösen, dass nach Änderungen auch die Webseitenbesucher eine saubere Seite angezeigt bekommen? Die TTL herabzusetzen (etwa auf 1 Stunde) scheint nicht immer zu reichen.

Und: F12... funktioniert auf dem Desktop. Wie macht man einen Reload auf Smartphones?

Warum ich hier Frage? Weil ich bisher keine klare Antwort erhalten habe (habe verschiedene Leute gefragt). Hoffe nun hier die ultimative Antwort zu erhalten!

  1. Lieber UlrichW,

    Nach Änderungen unserer Webseite werde ich vom Entwickler aufgefordert, die Seite zu reloaden, ggf. sogar einen "harten" Reload via F12 und "Cache leeren und vollständig aktualisieren" durchzuführen.

    da reden wir von einem Caching-Problem. Der Browser hat in seinem Gedächtnis eine ältere Version der Seite vorliegen. Das tut er deshalb, weil der Webserver beim Ausliefern der Seite dazu gesagt hat, wie lange die Daten gelten.

    Es gibt in den Browsern einen Mechanismus, der prüfen kann, ob eine Seite in der Zwischenzeit aktualisiert wurde. Das nennt man den if-modified-since-Header. Wenn also die Technik hinter der Seite diesen Header unterstützt, kann man dem Browser signalisieren, dass der Cache in der Tat veraltet ist. Der Entwickler kann sagen, ob das unterstützt wird, oder nicht.

    Warum ich hier Frage? Weil ich bisher keine klare Antwort erhalten habe (habe verschiedene Leute gefragt). Hoffe nun hier die ultimative Antwort zu erhalten!

    Wenn es um eine einzelne Inhaltsseite der Website geht, kann man sie im Browser mit einem Parameter in der URL aufrufen, um dem Browser vorzugaukeln, dass es sich um eine andere Seite handelt:

    • https://example.com/pfad/datei.html
    • https://example.com/pfad/datei.html?murks=absicht
    • https://example.com/pfad/datei.html?t=0

    Will man jemandem die Seite (z.B. in einer Mail) verlinken, könnte man mit diesem URL-Parameter dafür sorgen, dass der Cache des Browsers überlistet wird.

    Mit der Zeit wird der Cache des Browsers auch die ursprüngliche Seite irgendwann aktualisieren. Aber wann das ist, kann nur derjenige sagen, der die Einstellungen des Webservers genau kennt. In Deinem Fall also der besagte Entwickler.

    Liebe Grüße

    Felix Riesterer

    1. Hallo Felix,

      if-modified-since ist ein Request Header, schickt der Browser den immer von sich aus?

      Wenn der Entwickler eine Testversion veröffentlicht, sollte der Testserver so eingerichtet sein, dass dort ein kurzes Cacheintervall gilt. In der Produktion kann es länger sein.

      Frage wäre auch ob hier noch ein Zusatzcache im Spiel ist (z.B. Varnish)

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Moin Rolf,

        if-modified-since ist ein Request Header, schickt der Browser den immer von sich aus?

        das sollte nur der Fall sein, wenn der Browser die Ressource bereits hat – ansonsten wüsste er ja gar nicht, was der letzte Stand bei ihm ist 😉

        Viele Grüße
        Robert

        1. Hallo Robert,

          wenn der Browser die Ressource nicht hat, hast Du auch kein Thema mit veraltetem Cache.

          Mich irritiert nur, dass Felix diesen Header konsequent so darstellt, als würde der Server ihn schicken. Was mich bei einem Request-Header verwundert.

          Muss ihn morgen beim Glühwein wohl mal genauer befragen 😉

          Das ist ja letztlich ein Gesamtkunstwerk, das man da mit ETag und Cache-Control schaffen muss, und bei dem ich nicht alle Ecken kenne. Es mag auch je Browser/Server Kombination anders funktionieren...

          Rolf

          --
          sumpsi - posui - obstruxi
    2. Vielen Dank, sehr klar beschrieben (und noch so früh am Tag ;- ).

      Kurze Zusatzfrage: Bedienen sich etwa auch Zeitungen des if-modified-since Headers, wenn Artikel upgedated werden? Oder machen die das anders?

      1. Lieber UlrichW,

        Kurze Zusatzfrage: Bedienen sich etwa auch Zeitungen des if-modified-since Headers, wenn Artikel upgedated werden? Oder machen die das anders?

        der Header kommt nur dann vom Server, wenn der Browser fragt. Warum sollte der Browser fragen? Weil der Benutzer die Seite angezeigt haben will? Da kann der Browser diese ja aus seinem Cache nehmen, ohne den Webserver überhaupt zu kontaktieren. Wenn das Verfallsdatum noch nicht erreicht wurde, wäre das ein vernünftiges Vorgehen.

        Wenn also der Browser beim Server (auf diese entsprechende Weise!) nachfragt, dann kann dieser mit dem if-modified-since-Header antworten. In diesem Moment kann der Browser erkennen, ob seine gecachte Version noch gilt, oder nicht.

        Das Geheimnis liegt also in der Frage, ob der Browser sich veranlasst sieht, beim Anzeigen der Seite zuerst beim Webserver nachzufragen, ob die im Cache befindlichen Daten noch Gültigkeit haben, oder nicht. Sollte das Verfallsdatum noch nicht abgelaufen sein, ist es vernünftig, wenn der Browser dieses nicht tut. Erst dann, wenn das Verfallsdatum tatsächlich abgelaufen ist, muss er nachfragen. Aber selbst dann könnten die Daten ja noch Gültigkeit haben und genau dafür ist der if-modified-since-Header da.

        News-Seiten haben in aller Regel eine mittels JavaScript eingebaute Intelligenz, die auf ihre Weise prüft, ob es neue Inhalte gibt, und wenn ja wie viele und welche. Das geht weit über den if-modified-since-Header hinaus.

        Liebe Grüße

        Felix Riesterer