Cache des Kommentarbereichs implementiert

Da ich selbst nun auch vom Nofollow Case by Case Plugin auf meine manuelle Dofollow Lösung über die functions.php umgestiegen bin, habe ich mich ebenfalls entschlossen einen Cache für meinen Kommentarbereich zu implementieren. Durch meine manuelle Dofollow Lösung wird ja pro Kommentar eine Datenbankabfrage generiert und gerade in Beiträgen mit vielen Kommentaren kann es diesbezüglich dann doch zu Performance Einbußen kommen.

100 Kommentare = 100 Datenbank Abfragen, und das bei jedem einzelnen Seitenaufruf, da wird mir persönlich gleich ganz schlecht.

Also habe ich mir kurzerhand mein PHP Cache Script zur Brust genommen und das Ganze anhand dem Alter der Artikel für meinen Kommentarbereich wie folgt konfiguriert:

  • bei neuen Artikeln wird der Cache alle 10 Minuten neu geschrieben
  • bei Artikeln, die älter als 1 Tag sind, wird der Cache alle 30 Minuten neu geschrieben
  • bei Artikeln, die älter als 3 Tage sind, wird der Cache alle 3 Stunden neu geschrieben
  • bei Artikeln, die älter als 10 Tage sind, wird der Cache alle 10 Stunden neu geschrieben
  • bei Artikeln, die älter als 30 Tage sind, wird der Cache alle 30 Stunden neu geschrieben
  • bei Artikeln, die älter als 60 Tage sind, wird der Cache alle 60 Stunden neu geschrieben

Direkt über dem Kommentar Formular findet Ihr nun, sobald ein Cache File existiert, 3 Info Zeilen, die das Datum und die Uhrzeit des aktuellen Caches ausgeben, das Datum und die Uhrzeit des nächsten Cache Updates anzeigen und Euch mitteilen, dass neue Kommentare erst nach dem nächsten Cache Update erscheinen.

Nun wird der Cache des Kommentarbereichs in dieser Form erst mal Probe laufen und wir müssen sehen, ob die bisher definierten Zeiten ausreichend sind. Konfigurationsvorschläge und diesbezügliche Ideen von Euch nehme ich natürlich gerne entgegen.

Jetzt bräuchte ich nur noch eine vernünftige Möglichkeit die Gravatare ordentlich zu cachen, aber irgendwie scheint es diesbezüglich nichts brauchbares zu geben. Ich habe nur 1 neueres Plugin gefunden, aber bei diesem wird explizit darauf hingewiesen, dass es für größere Blogs nicht geeignet ist, da die ersten Seitenaufrufe ewig dauern könnten. Deshalb werden auch nur noch 3 Gravatare pro Seitenaufruf in den Cache geschrieben. Damit wäre ich ja bei meinen über 7000 Kommentaren die nächsten 100 Jahre erst mal damit beschäftigt sein, den Gravatar Cache zu schreiben… :-(

6.02.2010 |
 Autor: Crazy Girl |
 Themenbereich: Bloggen
Trackback URL: http://www.crazytoast.de/2010/02/bloggen/cache-des-kommentarbereichs-implementiert.html/trackback/
Ähnliche Beiträge:
↑ Ganz nach oben springen ↑
↓ zum kommentieren springen ↓
20 Reaktionen:
3 Trackbacks:
  1. [...] Wochenende hatte ich ja meinen Kommentarbereich in einen Cache gepackt, der sich im Laufe der Woche als nicht wirklich nutzerfreundlich herausstellte, da [...]

  1. [...] muss nur erfinderisch sein. Ob Ihr nun Widgets cachen wollt, “related Posts” oder den ganzen Kommentarbereich – hier seid Ihr [...]

  1.  Weekly 5-6/10 | [Gregel Dot Com], am 15. Februar 2010:

    [...] Cache des Kommentarbereichs [...]

17 Kommentare:
  1. Olli schrieb am 6. Februar 2010 um 21:52 Uhr:

    Ach was, 100 Jahre würde es auch nicht dauern (es sei denn, keiner würde den entsprechenden Beitrag anschauen)… und viele Gravatare sind ja auch “doppelt und dreifach”, oder hast du 7000 verschiedene Kommentatoren?

    und der Hinweis ist noch vom ersten Release, das die Beschränkung auf max. 3 Gravatare noch nicht drinne hatte… sollte nun eigentlich problemlos funktionieren… hatte ich vergessen rauszunehmen…

    Ich würde ja gerne eine “allgemeingültige” Variante zum aufbauen des Caches im Adminbereich anbieten, allerdings gibt es da mehrere Probleme… ein wichtiger Knackpunkt ist, dass die Größe der verwendeten Gravatare nicht irgendwo allgemein definiert ist, sondern nur bei den entsprechenden Aufrufen selbst übergeben wird (und es könnten auch mehrere Größen in Verwendung sein, oder durch einen Wechsel des Themes könnte wieder alles anders sein)… aber auch dafür werde ich noch ne Lösung finden…

  2. Markus schrieb am 6. Februar 2010 um 23:03 Uhr:

    Nicht schlecht muss ich sagen. *Hutab* Aber wir kennen es ja nicht anders von Dir Tanja. :-)

  3. Thomas schrieb am 6. Februar 2010 um 23:06 Uhr:

    Nicht schlecht was du da gebastelt hast. Mit dem einen Plugin meinst du wohl das von Olli. Aber er hat dir da ja schon geschrieben und kann dir bestimmt auch mit Rat und Tat unterstüzen.
    Aber ich verstehe nicht wieso da steht:
    Cache des Kommentarbereichs vom 06.02.2010 22:48 Uhr
    Neue Kommentare erscheinen erst nach dem nächsten Cache Update!
    Nächstes Cache Update: 06.02.2010 22:58 Uhr
    Irgendwie macht das für mich keinen Sinn? Dann ist es ja doch in Echtzeit?
    Viele Grüße
    Thomas

  4. Crazy Girl antwortete am 7. Februar 2010 um 10:30 Uhr:

    @Olli: Ich hab mir jetzt schnell was selbst gebaut um die Gravatare zu cachen. Mal sehen wie das funktioniert.
    Könnte natürlich sein, dass es mir die Seitenaufrufe jetzt erst mal für ein paar Tage performancetechnisch total in den Keller schießt, aber es läuft immerhin schon mal ohne Plugin (bin ja ein Plugin Minimalist).
    Und irgendwann müsste der Cache ja mal alle meine Kommentatoren durch haben…

    @Markus: Wenn wenig Kommentare da sind bringt der Cache nicht wirklich viel, aber bei den dicken Artikeln hat es definitiv was ;-)

    @Thomas: Das steht da, weil ein ganz neuer Artikel (jünger als 1 Tag) alle 10 Minuten neu gecacht wird, danach gehts aufwärts (jünger als 3 Tage) auf alle 30 Minuten, ab 3 Tage auf 3 Stunden etc. Ich wußte nicht so ganz wie ich die Zeiten setzen soll, muss mal beobachten in welchen Zeitabständen Kommentare in neuen Artikeln eintrudeln und das dann entsprechend hochsetzen.
    Nehme auch gerne Ideen entgegen :-)

  5. Markus schrieb am 7. Februar 2010 um 10:40 Uhr:

    Ah jetzt ist das Kommentarfeld wieder da, hab Dein Parse error gesehen ätsch :-) Spaß beiseite, vielleicht würde es auch Sinn machen bei neuen Artikeln am ersten Tag gar keinen Cache einzubauen, da doch oft mal Disskussionen entstehen am Anfang. Aber ich denke das kannst Du besser beurteilen wie es da aussieht bei Dir hier.

  6. Crazy Girl antwortete am 7. Februar 2010 um 10:48 Uhr:

    @Markus: Genau das habe ich gerade versucht (deswegen der Parse error) und es hat nicht so ganz auf Anhieb geklappt. Aber jetzt scheint es zu gehen ;-)

  7. Crazy Girl antwortete am 7. Februar 2010 um 11:03 Uhr:

    @all: Jetzt habe ich es noch etwas verfeinert: Der Cache des Kommentarbereichs greift erst, wenn der Artikel älter als 1 Tag ist und insgesamt mehr als 10 Kommentare/Trackbacks dazu bestehen ;-) 10 zusätzliche Datenbankabfragen kann man auch ohne Cache verschmerzen denke ich…
    Jetzt würde es noch gelten die Schwelle rauszufinden, ab wann die Seite mit dem einbinden und updaten des Cachefiles schneller ist als ohne Cache. Was denkt ihr?

  8. Markus schrieb am 7. Februar 2010 um 11:08 Uhr:

    Da haben wir uns mal wieder gut überschnitten^^ Ich denke pauschal kann man es nicht sagen ab wann es schneller ist. Ich denke auf jedenfall solltest Du das in Zeiten wo viel los ist messen bzw. dahingehend anpassen.

  9. Crazy Girl antwortete am 7. Februar 2010 um 12:02 Uhr:

    @Markus: Kucken wir einfach mal was dabei so rum kommt. Ich denke mit der Zahl 10 fahre ich schon ganz gut ;-)

  10. Olli schrieb am 7. Februar 2010 um 12:05 Uhr:

    Das Plugin ist ja mehr oder minder aus der gleichen Überlegung heraus entstanden und noch in einem frühen Entwicklungsstadium… Also falls du (auch wenn du das Plugin nicht benutzst) irgendwelche Verbesserungsvorschläge hast oder gar sinnvolle Codeschnipsel immer her damit…

  11. Crazy Girl antwortete am 7. Februar 2010 um 12:20 Uhr:

    @Olli: Ich hatte mir Dein Plugin heute morgen kurz angekuckt, bin ehrlich gesagt nicht durchgestiegen (meine PHP Kenntnisse reichen nicht allzuweit) und habe dann kurzerhand einfach nach dem logischen Prinzip selbst was zusammengebastelt, da ich immer eine manuelle Lösung vor die Benutzung von Plugins stelle.
    Wie sinnvoll oder sinnlos das ist, was ich zusammengebastelt habe, lasse ich am besten Dich entscheiden. Ich hab Dir das Script gerade per eMail geschickt. Kannst mir dann ja mailen, ob und was für einen Mist ich da wieder zusammengepfriemelt habe :-)

  12. Thomas schrieb am 7. Februar 2010 um 13:06 Uhr:

    Ok jetzt habe ich es verstanden :-) Jetzt hast du aber die Anzeige komplett raus genommen, oder sehe ich es jetzt nur nicht.

  13. Crazy Girl antwortete am 7. Februar 2010 um 13:09 Uhr:

    @Thomas: Diese Anzeige sowie der Cache laufen jetzt erst ab Artikel älter als einen Tag (das ist dieser hier noch nicht) + mehr als 10 Kommentare. Deswegen hier z.B. keine Anzeige = kein Cache :-)

  14. Markus schrieb am 8. Februar 2010 um 11:38 Uhr:

    Was mir gerade eigefallen ist… Das ist mir persönlich schon auf einigen Seiten so gegangen, man erhält die Mail Benachrichtigung das ein neues Kommentar da ist, geht dann auf die Seite und das neue Kommentar ist wegen Caches noch gar nicht zu sehen, ich denke mal hier wird es genauso sein, oder? Vielleicht sollte man das auch irgendwie bedenken und mit einbeziehen.

  15. Crazy Girl antwortete am 8. Februar 2010 um 12:38 Uhr:

    @Markus: Deswegen steht ja der Zusatz unter den Kommentaren (oberhalb der Kommentar Eingabemaske) “Cache…. nächstes Update xx” ;-)

  16. Jakob Schwichtnnberg schrieb am 8. Februar 2010 um 13:21 Uhr:

    Deine Artikel helfen mir wirklich immer weiter. Das , dass laden von Kommentaren jedes mal ein Datenbankzugriff bedeutet wusste ich noch nicht. Wenn mein Blog weiter wächst werd ich mir darüber sicher auch Gedanken machen müssen. Vielen Dank fürs teilen der Ideen :)

    lg Jakob

  17. Crazy Girl antwortete am 8. Februar 2010 um 18:10 Uhr:

    @Jakob: Die Kommentare machen nur Datenbankabfragen wegen meiner manuellen Dofollow Lösung. Sonst machen sie es nicht ;-)

Einen Kommentar dazu schreiben:

Bitte beachtet die Datenschutzhinweise sowie zu Spammer Kommentaren.
Ich behalte mir das Recht vor, Kommentare entsprechend zu löschen oder editieren!

Kommentare abonnieren ohne selbst einen Kommentar abzugeben: