Ankündigung

Einklappen
Keine Ankündigung bisher.

Chrome zeigt nach Bearbeitungen "alten" Seiteninhalt an

Einklappen

Neue Werbung 2019

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

  • Chrome zeigt nach Bearbeitungen "alten" Seiteninhalt an

    Hi,

    habe große Probleme mit dem Chrome und sein Cache-Verhalten: Wenn ich bzw. meine Kunden in unserem CMS Texte oder Bilder ändern, werden diese Änderungen nicht angezeigt. Manchmal reicht F5, oftmals aber auch nicht. Hartnäckig wird der alte Seiteninhalt angezeigt. Ganz schlimm ist es, wenn Änderungen im JavaScript oder in Json-Dateien vorgenommen werden.
    Bei Json und CSS habe ich mir versucht zu helfen, in dem ich ...?neuladen=3772364763746 (also eine Random-Zahl) an die URL gehängt habe. Bringt aber auf manchen Rechnern auch nichts.
    Alle Admins bekommen zudem noch folgenden Meta-Angaben eingefügt:
    <meta http-equiv="cache-control" content="max-age=0" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
    <meta http-equiv="pragma" content="no-cache" />

    Bin nun mit meinem Latein am Ende.
    PS: Edge arbeitet dabei ohne Probleme.

    Vielen Dank für Tipps,

    Uli

  • #2
    Welchen HTTP-Header sendest du.
    Die Meta-Angaben in der HTML-Datei bringe gar nichts und werden gern mal ignoriert, ausser charset vielleicht.
    Das Caching kannst du nur über den HTTP-Header beeinflussen.
    https://de.wikipedia.org/wiki/HTTP_Caching

    Bei Json und CSS habe ich mir versucht zu helfen, in dem ich ...?neuladen=3772364763746 (also eine Random-Zahl) an die URL gehängt habe. Bringt aber auf manchen Rechnern auch nichts.
    Das ist dann aber schon sehr ungewöhnlich.

    Kommentar


    • #3
      Vielen Dank für Deine Antwort. Tatsächlich setze ich keinen HTTP-Header (außer bei 301). Ich dachte, die Metas reichen, aber unter HTML5 sind die eh "verboten", wie ich nun weiß.
      Gibt es für die Admins/Redakteure Standard-Header, die verbreitet sind?
      Vielleicht sowas habe ich gefunden: header('Cache-Control: no-cache,must-revalidate',true);

      Kommentar


      • #4
        Sag deinen Kunden mal, dass sie "Shift + F5" oder "STRG+F5" drücken sollen. Das aktualisiert und löscht den Cache.

        Der Cache funktioniert in den meisten Browsern so:

        1.) Wenn eine Seite noch nie geladen wurde, wird sie einfach geladen
        2.) Wenn eine Seite schon geladen wurde, sendet der Browser den Request-Header "IF-MODIFIED-SINCE" (z.B. If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT)
        3.) Anhand dieses Datums entscheidet der Webserver, welcher Response-Header gesendet wird

        Um Caching zu verhindern, kannst du folgendes z.B. mit PHP tun:

        PHP-Code:
        header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
        header("Cache-Control: post-check=0, pre-check=0"false);
        header("Pragma: no-cache"); 
        Aber willst du das wirklich? Ich rate davon ab, weil das gilt für alle Browser und verursacht Traffic ohne Ende, der völlig unnötig ist... ich finde die Idee mit der "random"-Zahl gar nicht so schlecht. Allerdings wäre es vermutlich klüger, statt einer Random-Zahl das Datum der letzten Änderung der JavaScript-Datei zu verwenden.

        Wichtig: Chrome ignoriert möglicherweise bei static content, also bei JavaScript-Dateien, Bildern, etc. die Parameter (?neuladen=123456). Du könntest versuchen, mit mod_rewrite zu arbeiten, so dass deine JavaScript-Datei so eingebunden wird:

        <script src="/meinscript.234566.js"></script>

        und dann via Mod-Rewrite einfach auf das richtige Script weiter zu leiten.
        Tutorials zum Thema Technik:
        https://pilabor.com
        https://www.fynder.de

        Kommentar


        • #5
          Zitat von Andreas Beitrag anzeigen
          Chrome ignoriert möglicherweise bei static content, also bei JavaScript-Dateien, Bildern, etc. die Parameter (?neuladen=123456).
          Das wäre ja fatal und widerspricht der kompletten Logik von HTTP. Wenn das wirklich so ist, ist das eindeutig ein Bug von Chrome und sollte den Entwicklern gemeldet werden.

          z.B. würde dann folgendes in Chrome nicht funktionieren:
          HTML-Code:
          <script src="get_file.php?filename=main.js"></script>
          <script src="get_file.php?filename=ui.js"></script>
          <script src="get_file.php?filename=dialog.js"></script>
          Also wenn Chrome wirklich so ein Verhalten zeigt.

          Kommentar


          • #6
            Also, mit meiner (aktuellen) Version von Chrome funktioniert alles, wie es soll. Und das seit so ziemlich* jeder Version seit 2009, seit ich Chrome als Standardbrowser verwende.

            Chrome arbeitet meiner Erfahrung nach fanatisch zuverlässig.

            * Trotz des Autoupdate-Mechanismus kann ich nicht komplett ausschließen, dass ich mal ein Update übersprungen habe.


            Kommentar


            • #7
              Das wäre ja fatal und widerspricht der kompletten Logik von HTTP.
              Jupp... gab aber glaube ich mal einen Bug dazu... ist aber schon laaaange her, wie rkr richtig bemerkt...
              Tutorials zum Thema Technik:
              https://pilabor.com
              https://www.fynder.de

              Kommentar


              • #8
                Zitat von rkr Beitrag anzeigen
                Also, mit meiner (aktuellen) Version von Chrome funktioniert alles, wie es soll. Und das seit so ziemlich* jeder Version seit 2009, seit ich Chrome als Standardbrowser verwende.
                Kann ich bestätigen, ist privat auch seit Jahren mein Standard-Browser.
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar

                Lädt...
                X