Regina Schaukrug: Dynamische Inhalte und Cache

Beitrag lesen

(Hurra! Eine komplexe Frage zum Cachen. Das ist ja quasi meine Spezialstrecke…)

Aber ja doch!

  1. Cache nicht nur clientseitig, sondern auch serverseitig.
  2. Erzeuge zum Servercache einen passenden ETAG, der das Datum UND die URL repäsentiert.
  3. Sende must_revalidate und den Etag mit den headern.

Bei einer Abfrage nach der Seite ohne ETAG: schaue nach dem cache und ob dieser vorhanden und tagesaktuell ist. Falls ja: Seite aus server-cache und etag ausliefern. Falls nein: cache erzeugen, etag bauen, inhalt und etag ausliefern.

Bei einer Abfrage mit ETAG:

Schaue, ob das Datum im ETAG noch gültig ist: Falls ja: sende nur den ETAG und gut. Falls nicht nimm die neue Seite aus dem cache und sende diese mit dem neuen ETAG. Ist die nicht vorhanden, dann erzeuge diese und den ETAG einmalig. Nicht vergessen die alte Seite und den alten ETAG zu löschen.

Hint: Seite+Etag mit cronjob neu erzeugen. Nicht vergessen die alte Seite und den alten ETAG zu löschen.

Dann wäre da noch die einfachen Methoden:

<?php
header ( 'Expires: ' . date( 'r', mktime( 0, 0, 0, date('n'), date('j')+1, date('Y') ) ) );

Das erzeugt etwas wie:

Expires: Mon, 30 Apr 2018 00:00:00 +0200

Bedeutet: Der Client schaut auf seine Uhr... und die kann sehr falsch gehen. Also wäre besser …

<?php
echo ("Cache-Control: max-age=".(mktime( 0,0,0,date('n'),date('j')+1,date('Y') ) -mktime()));

zu notieren. Das erzeugt etwas wie:

Cache-Control: max-age=36680

Und macht den Cache ab Mitternacht der Serverzeit ungültig. Maßgeblich ist der Zeitpunkt des Requests. Daher muss die Restgültigkeit jedes Mal neu bestimmt werden.

Nur etwas schwieriger wird es, wenn noch Authorisierungen oder Sprachen zu berücksichtigen sind.

0 49

Dynamische Inhalte und Cache

pl
  • programmiertechnik
  1. 0

    Dynamische Inhalte un Cache

    Gunnar Bittersmann
    1. 0

      Dynamische Inhalte und Cache

      pl
      1. 2
        Felix Riesterer
        • meinung
        • programmiertechnik
        1. 0
          pl
          1. 0
            beatovich
  2. 0
    beatovich
    1. 0
      pl
      1. 0
        beatovich
        1. 0
          pl
          1. 0
            beatovich
            1. 0
              pl
              1. 0
                beatovich
              2. 0
                Henry
                1. 0
                  pl
  3. 0
    Regina Schaukrug
    • php
    • programmiertechnik
    1. 0
      beatovich
      1. 0
        Regina Schaukrug
    2. 0
      Regina Schaukrug
      1. 0
        pl
        1. 0
          Regina Schaukrug
          1. 0
            pl
    3. -1
      pl
      1. 0
        JürgenB
        1. 0
          pl
          • zu diesem forum
          1. 2
            markk
            1. 1
              pl
              1. 0
                markk
                1. 0
                  Matthias Apsel
                  1. 0
                    markk
                    1. 0
                      Matthias Apsel
                      1. 0
                        markk
      2. 1
        Regina Schaukrug
        1. 1
          pl
          • zu diesem forum
    4. 0
      pl
      1. 0
        Gunnar Bittersmann
        • https
        1. 0
          pl
          1. 0
            Gunnar Bittersmann
            1. -2
              pl
              1. 0
                Gunnar Bittersmann
                1. 0
                  pl
                  1. 2
                    Gunnar Bittersmann
                    1. 0
                      pl
                      1. 0
                        dedlfix
                        1. 0
                          pl
                          1. 1
                            dedlfix
                            1. -1
                              pl
                      2. 0
                        Gunnar Bittersmann
    5. 0
      pl