Naps: Caching

Hi,

ich erstelle gerade eine "News-Seite" in PHP / MySQL. Ich überlege mir gerade wie man am besten das Caching realisiert.

Nehmen wir an ich verwende eine Cachedauer von einer Stunde. Dazwischen kommen neue Artikel rein oder einer wird geändert. Soll ich hier einfach beim speichern den Cache löschen?

Oder wäre es besser automatisch zu überprüfen ob sich der Inhalt verändert hat. Aber ist das nicht genau der Schritt den man durch Caching verhindern will? Also jedesmal die Daten abzufragen....

Vielleicht kann mir ja Jemand ein paar Links / Ideen dazu schreiben...

MfG Naps

  1. Hi,

    ich erstelle gerade eine "News-Seite" in PHP / MySQL. Ich überlege mir gerade wie man am besten das Caching realisiert.

    Gut, darüber nachzudenken.

    Nehmen wir an ich verwende eine Cachedauer von einer Stunde. Dazwischen kommen neue Artikel rein oder einer wird geändert. Soll ich hier einfach beim speichern den Cache löschen?

    Cache löschen ist Sache des UserAgent. Da gibts serverseitig nichts zu machen.

    Oder wäre es besser automatisch zu überprüfen ob sich der Inhalt verändert hat.

    Machs nicht zu kompliziert. Nutze die üblichen Cache-Verfahren, beschrieben in uralten RFCs. Für Deinen Fall bietet sich Last-Modified an, btw. eines der ältesten Verfahren zum Caching und immer noch aktuell.

    Wenn Deine Inhalte in MySQL sind, führe ein Feld zum Datum der letzten Änderung, was sich für News geradezu anbietet, möglicherweise hast Du ja schon solch Feld. Den String für den HTTP-Response-Header Last-Modified kannst Du bereits im SQL-Statement direkt aus MySQL heraus erzeugen.

    Horst

    1. Cache löschen ist Sache des UserAgent. Da gibts serverseitig nichts zu machen.

      Ich meinte eher, dass ich den "fertigen" HTML Content am Server speicher um ihn nicht jedesmal neu erstellen zu müssen.

      MfG Naps

      1. Ich meinte eher, dass ich den "fertigen" HTML Content am Server speicher um ihn nicht jedesmal neu erstellen zu müssen.

        Dann tu doch genau das :-)
        Erstelle den Inhalt, speicher ihn irgendwo und bau das geeignet in deine Seitenstruktur ein.
        Wenn sich der Inhalt ändert kannst du entweder den Inhalt gleich neu erstellen, oder du löchst ihn und erstellst ihn dann neu wenn er abgerufen werden soll (und nicht da ist).

      2. Ich meinte eher, dass ich den "fertigen" HTML Content am Server speicher um ihn nicht jedesmal neu erstellen zu müssen.

        Das kommt ein wenig darauf an wie dein serverseitiges Caching realisiert ist und wie schnelldie neuen News gezeigt werden müssen.

        Wenn du das komplett fertige Dokument im Cache speicherst würde ich eher weniger oft den Cache erneuern, wenn aber einzelne Fragmente im Cache liegen und der Server trotzdem noch das Dokument zusammen baut, dann relativ oft oder eventuell sogar bei jedem News-Update.

        Oder wäre es besser automatisch zu überprüfen ob sich der Inhalt verändert hat. Aber ist das nicht genau der Schritt den man durch Caching verhindern will?

        Das find ich unpassend formuliert. Ungecacht muss man immer alle Daten anfordern um das Dokument zu generieren, mit Caching würdest du erst ein Request absetzen um zu erfahren ob der Cache aktualisiert werden muss.

        MfG
        bubble

        --
        If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
      3. hi,

        Ich meinte eher, dass ich den "fertigen" HTML Content am Server speicher um ihn nicht jedesmal neu erstellen zu müssen.

        Achso, rein serverseitig, ok, hab verstanden.

        Es gibt Template-Engines, welche solcher Art Caching unterstützen, damit wirst Du schneller fertig. Related tag: Staging.

        Horst