Hier geht es also um die Caches von vBulletin und hier insbesondere den Datastore, der meiner Meinung nach eine sehr wichtig und tragende Rolle einnimmt.
Was ist der Datastore?
Grob gesagt werden im Datastore Ergebnisse von Abfragen gespeichert, die vorher aus anderen Tabellen abgefragt wurden. Der Sinn ist also, die vielen Anfragen der einzelnen Tabellen zu reduzieren, da oft die Antwort "gleich" bleibt und daher direkt den Datastore abzufragen. Somit muss eine Information dann nicht mehr über z.B. 7 Tabellen zusammengesucht werden, sondern steht direkt als fertiges Ergebnis im Datastore und kann mit einer Query abgefragt werden.
Der Haken an der Sache ist nur, dass der Datastore selbst in der Datenbank gespeichert ist. Auch wird dieser nicht einmal abgefragt, um alles zu haben, sondern viele viele Male pro Seitenaufruf.
So, und hier kommen dann schon die eigentlichen Caches, die richtigen Caches ins Spiel: z.B. APC. Ist das aktiviert, dann wird der Datastore nicht in der Datenbank gespeichert, sondern direkt im Hauptspeicher. Dort ist der Zugriff dann natürlich unverhältnismäßig schneller!
Warum sind Caches aber so wichtig?
vBulletin ist so ausgelegt, dass alle Abfragen möglichst kurz und einfach sind. Das hat aber auch den Nachteil, dass zig Datenbankabfragen getätigt werden müssen. Z.B. bei einem Post: Nur Auszugsweise: Die Forenberechtigungen, die Optionen, die Session, der Post selbst, die Signatur, das Avatar, der Username, die Reputation, die ganzen Templates , die für die Anzeige benutzt werden und natürlich jede einzelne Phrase (Platzhalter im Template), denn die stehen auch in der Datenbank. Teilweise (sehr oft) erfolgen diese Abfragen nicht direkt in einer Tabelle sondern mit Joins über mehrere. Daher gibt es auch die internen Caches, die diese Ergebnisse zwischenspeichern.
So ergibt das z.B. auch, dass für eine ganz simple Seite, die wohl jeder von uns rein in HTML erstellen könnte, 75 DB-Anfragen erforderlich sind. Sie Seite /contact-us (ganz unten rechts).
Der Debug von vBulletin:
Informationen zur Fehlersuche
Seiten-ID: 5
Übergeordnete ID: 1
Seitentemplate-ID: 8
Route-ID: 15
Seitentyp: custom
Seitenlayout-ID: 1
Seitenlayout-Template: screenlayout_1
Kanal-ID:
Knoten-ID:
Datenbankzugriffe: 75 (?)
AJAX Anfragen: 1
Facebook aktiv: Nein (Nicht aktiviert oder keine appid & Schlüssel angegeben.)
Style-ID: 2
Templates/Renders: 18/25
CSS Templates: 6
Current Time: r
Alles anzeigen
So, soviel erst mal. Die anderen "Caches", also Node-Cache und dergleichen, was vBulletin da noch so alles ablegt, kommen später.