Ankündigung

Einklappen
Keine Ankündigung bisher.

Cache Control für Redakteure

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

  • Cache Control für Redakteure

    Hi, (hoffe dies ist das richtige Forum für die Frage)

    ich habe gewisse Probleme mit dem Cache bei meinem CMS (Eigenentwicklung). Einige Kunden klagen darüber, dass Änderungen an einem Text oder das Auswechseln eines Bildes nicht im Browser angezeigt werden. Erst nach F5 oder Strg + F5 werden die Änderungen auch angezeigt. Extrem oft ist es unter Chrome und Firefox notwendig, u
    nter IE11 ist es nie und unter Edge extrem selten notwendig
    .
    Erst recht, wenn ich Änderungen an einer JS-Datei vornehme, hilft Strg + F5 im Chrome oft auch nicht und es wird hartnäckig die alte Datei verwendet.

    Nun gibt es ja mehrere "Orte", in denen ich den Cache-Zugriff steuern kann:
    • header("Cache-Control:no-cache, no-store, must-revalidate");
      header("Pragma: no-cache");
      header("Expires: 0");
    • <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" />
    • .htaccess
      Beispiel ExpiresDefault ...
    • serviceworker.js
      Sehr komplex und abhängig vom serviceworker
    Weiß jemand (serviceworker mal außen vor) wie die optimalen Einstellungen für CMS-Backends sein sollte und welche Datei hat Priorität und überschreibt die andere?
    Mehr, als überall "no-cache" eintragen, kann ich nicht und dennoch gibt es außer bei MS-Browsern Probleme.
    Und falls der beste Weg die .htaccess wäre: Wie kann ich da für Redakteure andere Einstellungen wählen, wie für Besucher?

    Vielen Dank für Tipps!


  • #2
    JavaScript-Dateien sollten versioniert sein oder deren Name sollte einen Hash-Wert enthalten.

    Also z.B.:

    my_app_1.0.0.js
    my_app_1.0.1.js
    usw.

    Oder:

    my_app.674f50d287a8c48dc19b.js
    my_app.912ec66d7572ff821749.js
    my_app.af7ae505a9eed503f8b8.js
    usw.

    Kommentar


    • #3
      Zitat von uli123 Beitrag anzeigen
      Erst recht, wenn ich Änderungen an einer JS-Datei vornehme, hilft Strg + F5 im Chrome oft auch nicht und es wird hartnäckig die alte Datei verwendet.
      Im Chrome ist die Kombination doch Shift+F5

      https://support.google.com/chrome/answer/157179?hl=de

      Kommentar


      • #4
        Erst recht, wenn ich Änderungen an einer JS-Datei vornehme
        jQuery zB nutzt zB den "Trick", das es hinten einfach einen Parameter anhängt. my_app.js?t=[unix_timestamp]

        EDIT: Jedoch mit dem Underline wie ich gerade feststelle: https://stackoverflow.com/a/16405968
        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


        • #5
          Das anhängen eines aktuellen Timestamps hat den Nachteil, das der Inhalt immer neu geholt wird. Aber bei großen Objekten wie Bildern ist aber ja ein Cachen gewollt. Per PHP kann man sich als Timestamp das Dateidatum hernehmen.Das Objekt ist so immer aktuell und ein wirksamer Cache ist auch gegeben.
          Siehe auch Browsercache clever nutzen.
          PHP-Klassen auf github

          Kommentar


          • #6
            Ich nochmal: Bleibt die Frage, ob es für mein Problem einen 08/15-Weg gibt, den alle Admins für ihr CMS nutzen. also sowas wie "Nie in META, nur im header(), da sonst …".
            Ich blicke allmählich nicht mehr durch.
            Da ich eigentlich zusätzlich noch mit serviceworker und manifest.json arbeiten möchte, fliegt mir alles um die Ohren und ich habe wohl sich Gegenseiten beeinflussende Einstellungen.
            Der serviceworker macht zum Beispiel aus allen Websites (mit meinem CMS) automatisch ein App, die auch offline die Inhalte anzeigt. Dazu wird alles in besonderen Speichern gecached (mehr dazu), die so hartnäckig sind, das gar nichts Aktuelles mehr verwendet wurde, wenn man online ist, angezeigt wird. Ich musste das Teil abschalten, damit ich mich überhaupt einloggen konnte (klicken - F5 - klicken F5 - klicken - F5 …).

            Kommentar


            • #7
              Beim Wettkampf "Wer ist der Schnellste Browser?" werden gerne schon mal Vorgaben die von Server kommen von den Browsern ignoriert. Das aber nicht einheitlich, was die unterschiedlichen Reakionen bei verschiedenen Browsern erklärt.
              Die einzig sichere Variante ein Cachen zu unterbinden ist den Browser eine für ihn unbekannte URL (inklusive GET-Parameter) vorzuwerfen. Wie das erreicht werden kann, wird hier in den Beiträgen von hellbringer #2 und hausl #4 genannt.
              PHP-Klassen auf github

              Kommentar

              Lädt...
              X