mfred: HP aktualisiert aber neuer Inhalt noch nicht sichtbar - erst nach manuellem Refresh

Hallo, ich betreibe eine simple Homepage. Wenn ich ein Dokument darin aktualisiere und es hochgeladen habe, dann sehe ich immer noch den alten Inhalt. Erst nach einem manuellen Refresh der Seite wird der neue Inhalt sichtbar. Wahrscheinlich hat der Browser die alte Version noch im Cache.

Den Update der Seite mache ich natürlich damit jeder gleich den neuen Inhalt sieht, nur im diesen Fall sehen Benutzer, die (vor kurzem) schon mal auf der Seite waren, immer noch den alten.

Frage: Wie es denn hier die Logik? Wie kann ich erzwingen, dass immer gleich der neue Inhalt angezeigt wird?

Danke für eure Hinweise.

Gruß, Manfred

  1. Das hängt davon ab, wie der Inhalt eingesteuert wird. Magst Du uns einen Link auf deine Homepage anvertrauen?

    Prinzipiell kannst Du über den cache-control http-Header erreichen, dass deine Seite nur kurz oder gar nicht gecached wird. Aber willst Du das? Zum einen hat dein Server dann mehr Traffic, und mobile Anwender mit knappem Datenbudget werden es auch nicht mögen.

    Ansonsten wird das Caching vom Browser durchgeführt, d.h. wenn der Bursche meint, dass er schon alles weiß, was es über deine Homepage zu wissen gibt, dann fragt er deinen Server nicht.

    Wenn dein Server es hergibt, könntest Du eine Hybrid-Lösung bauen, die per JavaScript einen winzig kleinen Request zum Server schickt und die Seitenversion überprüft. Stimmt sie nicht, wird automatisch ein Refresh ausgelöst. Das machst Du mit window.location.reload(true), ich weiß nur nicht genau wie gut das unterstützt wird. caniuse.com sagt nichts über die refresh-Methode von Location, und laut MDN geht das im Moment nur in Firefox. Meine eigene Beobachtung in IE11 und Chrome ist, dass es geht, also ist MDN ggf. veraltet.

    Rolf

    1. Tach!

      Wenn dein Server es hergibt, könntest Du eine Hybrid-Lösung bauen, die per JavaScript einen winzig kleinen Request zum Server schickt und die Seitenversion überprüft. Stimmt sie nicht, wird automatisch ein Refresh ausgelöst.

      (GET-)Requests sind immer klein. Und man kann sie mit 304 Not Modified ebenso klein beantworten. Was man dabei aber alles wie einstellen muss, kann ich nicht sagen.

      dedlfix.

    2. Hallo, Danke für die Info. Erstmal möchte ich da nicht eingreifen, sondern hoffe, dass das browsereigene Cachemanagement weiß was es tut.

      Muss das Problem nicht jede Homepage haben? Man muss darauf vertrauen können, dass das, was ich auf den Server stelle, auch von jedem Besucher gesehen wird und nicht der alte Inhalt.

      Gerade gestern hatte ich den Fall, dass ein Besucher sich wundert, dass er meinen Update vom Vortrag nicht sieht. Ich habe dann auf seinem Laptop einen manuellen Refresh gemacht und dann war alles schick.

      Hmm.

      Gruß, Manfred

      http://www.tshg.org

      1. Tach!

        Danke für die Info. Erstmal möchte ich da nicht eingreifen, sondern hoffe, dass das browsereigene Cachemanagement weiß was es tut.

        Mit Hoffnung tut es aber nur irgendwas und nicht das, was du dir vorstellst.

        Muss das Problem nicht jede Homepage haben?

        Ja, jede Webseite hat das. Und man löst das, indem man steuernde Angaben für das Cachemanagement sendet. Im Vorfeld.

        Man muss darauf vertrauen können, dass das, was ich auf den Server stelle, auch von jedem Besucher gesehen wird und nicht der alte Inhalt.

        So läuft der Hase aber nicht. Wenn man sowieso ständig fragen muss, ob der Server was neues hat, braucht man im Prinzip auch gar keinen Cache. Es geht darum, Requests zu sparen. Das war der ursprüngliche Gedanke. Die Technik wurde im Laufe der Zeit lediglich verbessert, so dass man nun auch das Spielchen "Hast du was? - Nichts neues." spielen kann. Aber das muss man konfigurieren und somit ins Cachemanagement und die Serversettings eingreifen.

        dedlfix.

      2. http://www.tshg.org

        Das sendet einen ETag-Header was darauf hindeutet dass es mehrere Entities Deiner Seite gibt. Dahinter steckt vermutlich in Loadbalancer, aber genaues hierzu weiß Dein Provider.

        Du könntest mit FileETag None in der .htaccess dieses Verhalten abschalten, was den Server dann dazu veranlasst einen Last-Modified-Header zu senden. MfG

        PS: Hab grad gesehen, einen Last-Modified-Header gibt es auch der zu prüfen wäre.