Frage

Stellen wir uns vor, dass wir Blog mit Kategorie A haben. Kategorie A ist mit derzeit 1000 Einträge auf 100 Seiten. Alle Seiten werden in Dateien (zB im Cache von Smarty Template-Engine) zwischengespeichert. Ich füge Post und wollen es sofort auf der ersten Seite angezeigt werden. Also, ich habe zu löschen oder Invalidier Cache für alle 100 Seiten der Kategorie A.

Löschen von Seiten im Cache ist keine gute Idee, weil wir zu viele Dateien haben können (beispielsweise Tausende von Seiten). Ich denke, dass Cache ungültig zu machen und Seite auf Anfrage Regenerieren ist viel effizienter Art und Weise.

Mein einziger Gedanke ist number of posts in category zu Cache-ID hinzuzufügen. Also, zuerst sollten wir Zahl der Stellen in der Kategorie (zum Beispiel von memcache) erhalten und dann prüfen, ob gültige Fassung durch diese Zahl zwischengespeichert.

sieht alles gut und einfach. Aber lassen Sie uns Situation vorstellen, wenn ich einen neuen Beitrag Zugabe bin und dann nach 1 Minute ich entfernt eine andere (ältere) Post. Anzahl der Beiträge noch 1000 und einige Kategorie Seiten werden alt bleiben (wenn sie nicht während dieser 1 Minute angesehen wurden).

Was ist die Lösung?

PS:. Sorry für mein Englisch, aber ich denke, dass meine Frage von Menschen klar sein wird, die bereits ein solches Problem konfrontiert

Danke

War es hilfreich?

Lösung

Anzahl der Beiträge ist keine gute Lösung, denn wenn man einige Post bearbeiten Sie würde Cache als auch zu aktualisieren.

Paar von Strategien kann ich denke an:

  • Verwenden Sie Zeit, wenn eine Änderung als Referenz durchgeführt wurde.

Wenn neue Post hinzugefügt wird (entfernt, bearbeitet) - Öffnungs aktuellen Zeitstempel in einer Kategorie, nennen wir es cache_threshold. Wenn eine Seite angefordert wird - überprüfen, wenn Sie diese Seite zwischengespeichert wurde. Wenn es älter ist als unsere Schwelle -. Seite regeneriert werden muss

  • Wechseln Sie in den Objekt-Caching, anstatt Seiten-Caching.

Stattdessen ganze Seiten zwischenzuspeichern, können Sie jedes einzelne Post zwischenzuspeichern. Wenn neue Post (entfernt, bearbeitet) hinzugefügt Sie würde nur sofort seinen Cache regenerieren, da es nicht zeitaufwendig ist. Um die Seite anzuzeigen, müssten Sie nur eine erforderliche Menge an Cache gespeicherten Beiträge greifen und sie anzuzeigen.

Diese Lösung erfordert mehr Arbeit, aber es ist flexibler und effektiver.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top