Tipps & Tricks: vBulletin Forum optimieren / beschleunigen / Server-Last reduzieren
Veröffentlicht: 03.03.2008 um 18:42 von Arthur Spooner
Aktualisiert: 20.04.2009 um 14:41 von Arthur Spooner (Update: 20.04.2009)
Aktualisiert: 20.04.2009 um 14:41 von Arthur Spooner (Update: 20.04.2009)
Stichworte forenoptimierung, server-tipps, vbulletin, website-optimierung
Wenn das vBulletin Forum mit ansteigenden Userzahlen immer langsamer oder die Last des Servers zu hoch wird, dann helfen schon einige wenige Optimierungen um das Problem in den Griff zu bekommen.
Mit den folgenden Optimierungen ließ sich die Performance des netzwelt.de Forums (über 130.000 User) um ca. 50 % bis 60 % steigern.
Wer ist online
Kontrollzentrum -> vBulletin-Einstellungen -> Wer ist online
Kontrollzentrum -> Benutzergruppen verwalten -> Nicht registriert / Nicht angemeldet
CSS-Stylesheets als Dateien speichern, aktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Style und Sprache
Wichtig: Es muss ein Verzeichnis namens 'vbulletin_css' im Verzeichnis 'clientscript' angelegt werden, in dem der Webserver Dateien erstellen darf (777).
Templatenamen als Kommentar in HTML-Quelltext schreiben, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Allgemeines
HTML-Ausgabe mit GZIP komprimieren, aktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Cookies und HTTP-Header
Einen Eintrag drunter den GZIP Kompressions-Grad auf 1 setzen. Ein höherer Wert treibt nur die Serverlast unnötig nach oben.
Forumsuche optimieren
Die Forensuche kann man optimieren in dem man der Tabelle "post" einen zusätzlichen Index verpasst. Dazu sollte man folgende Query ausführen:
Der zusätzliche Index benötigt ein Paar MB an zusätzlichen Speicherplatz.
Lebensdauer gecachter Beiträge erhöhen
Kontrollzentrum -> vBulletin-Einstellungen -> Servereinstellungen und Optimierungen
Den Wert sollte man auf mindesten 30 Tage setzen. Zu emfehlen sind 90 Tage.
Verzeichnisse/Scripte in der robots.txt ausschließen
Nicht relevante (unwichtige Inhalte für Suchmaschinenergebnisse) Inhalte sollten durch die robots.txt für die crawler gesperrt werden um keine zusätzliche Last zu erzeugen.
Als Grundeinstellung kann folgender Eintrag genutzt werden:
Natürlich kann man diese noch nach eigenen Bedürfnissen ergänzen.
.htaccess in die vhost.conf verschieben
Dieser kleine Trick bringt meiner Meinung nach die meiste Entlastung, nicht nur für das Forum.
Man sollte, falls möglich, die .htaccess in die vhost.conf (kann je nach OS variieren) verschieben da bei jedem Seitenaufruf geprüft wird ob die .htaccess überhaupt existiert und dann muss sie noch einmal ausgewertet werde. Das verursacht nur unnötige Datenzugriffe. Wenn die .htaccess aber in die vhost.conf verschoben wird, dann wird der Inhalt dieser in den RAM geladen und die Auswertung geht wesentlich schneller.
Wichtig: Nachdem die .htaccess verschoben wurde muss der Server neu gestartet werden, damit er sich den Inhalt in den RAM laden kann.
Yahoo Slurp Spider und Teoma/Ask Jeeves Spider ausbremsen
Diese beiden spider crawlen mehrere Tausend Seiten täglich und bringen kaum Trafik über die Suchmaschine. Deswegen kann man die beiden ohne Probleme etwas ausbremsen und denen "sagen", dass sie nur alle 60/90 Sekunden eine Seite aufrufen dürfen.
Dafür muss folgendes in die robots.txt eingetragen werden.
Yahoo Slurp Spider
Teoma/Ask Jeeves Spider
Nachtrag: In einem anderen Blogeintrag habe ich eine Liste mit bösartigen Spidern erstellt, die man ebenfalls in der robots.txt aussperren kann.
No-Cache HTTP-Header senden deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Cookies und HTTP-Header
Mit dieser Einstellung muss die Seite nicht jedes Mal neu berechnet werden, sondern wird teilweise im Browsercache abgelegt.
Hitzahl der Themen/Anhänge sofort aktualisieren, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Servereinstellungen und Optimierungen
Wartezeit zwischen zwei Suchanfragen
Kontrollzentrum -> vBulletin-Einstellungen -> Suchmaschine: Einstellungen
Den Wert sollte man nicht auf 0 belassen, da die Forensuche sehr Lastintensiv ist
Bewertung eines Themas anzeigen, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Forum: Themenanzeige (showthread)
Weitere Optimierungen
Die folgenden Optimierungen wurden von mir nicht verwendet, sollen aber auch hilfreich sein.
Anhänge in das Dateisystem verschieben
Kontrollzentrum -> Anhänge -> Anhangs-Speicherart
Das Gleiche gilt auch für Avatare.
Suche für Gäste, deaktivieren
Finde ich persönlich den Gästen gegenüber nicht besonders fair.
Automatische Suche nach ähnlichen Themen, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Suchmaschine: Einstellungen
Sehr Lastintensiv aber auch nützlich
Generell sollte man die Forensoftware und Plugins regelmäßig auf neue Updates überprüfen.
Die Hersteller verbessern ihre Software mit jedem Update was sich oft positiv auf die Performance auswirkt. So bringt z.B. die aktuelle vBSEO Version (3.1) gegenüber den Vorgängern einen kleinen Geschwindigkeitsvorteil.
Update ( 19.12.2008 ):
Auf vbulletin.org wurde das Add-On vB Optimise 1.0.2 veröffentlicht, mit dem sich die Templates, Styles und Phrasen cachen lassen, was für eine Entlastung der Datenbank und für eine schnellere Ladezeit sorgt.
Die Messungen mit Hilfe von Microstats (vB-Add-On) haben im NW-Forum eine durchschnittliche Verbesserung der Ladezeit um 0.3 Sekunden und eine Einsparung von zwei DB-Queries ergeben.
Update ( 05.02.2009 ):
Bestimmte Funktionen und Features für Gäste ausstellen ist ja schön und gut aber manche Funktionen, die die Datenbank belasten und für Gäste eher uninteressant sind, lassen sich nicht separat abstellen. Da hilft ein einfacher Trick, den man mittels des vBulletin-Hook-Systems realisieren kann. Dafür erstellt man im AdminCP ein neues Plug-In (Add-ons & Plug-ins -> Plug-in hinzufügen) und wählt als Einstiegspunkt "global_start" aus.
Der Einstiegspunkt "global_start" bedeutet, dass das Plug-In bei jedem Seitenaufruf aufgerufen wird.
Nun kann man für Gäste ganz speziell Funktionen deaktivieren, die sich normalerweise nur global deaktivieren lassen. Dafür trägt man in das Feld "PHP-Code des Plug-ins" folgendes ein:
In diesem Beispiel wird die Moderatoren-Spalte, die Geburtstagskinder und die Mitarbeiter-Liste für Gäste deaktiviert, da diese Informationen für sie relativ uninteressant sind. Ein positiver Nebeneffekt dabei ist, dass der Quellcode schlanker und die Anzahl an Links reduziert wird, was den Google-Bot freuen wird.
Die Einstellungen oben sind nur ein kleiner Auszug, wie sie auf netzwelt.de eingesetzt werden. Durch gezieltes Deaktivieren von Add-Ons oder Teilfunktionen dieser, kann man den einen oder anderen Datenbankzugriff sparen. Bei einigen Tausend oder Hunderttausend Gästen täglich kommt eine schöne Summe an Datenbankzugriffen zusammen, die man dem Server einfach abnimmt.
Update ( 20.04.2009 ):
Eine Kleinigkeit ist mir noch aufgefallen, die man Gästen ersparen kann, wenn man keine globalen Hinweise (integriert seit vBulletin 3.7.4) anzeigt, bzw. nur Hinweise für Mitglieder anzeigt, wozu ich eh aus SEO-Sicht raten würde.
Hinweise für Gäste, lassen sich mit der bereits oben genanten Methode, mit dem Plug-In, deaktivieren (Das spart bei Gästen pro Seitenaufruf mind. einen Datenbankzugriff). Man gaukelt dem System einfach vor, dass keine Hinweise verfügbar sind, indem man das Array "noticecache" "leert".
Hinweis: Wenn weitere Optimierungen oder Tipps und Tricks bekannt werden, dann werden sie hier veröffentlicht.
Mit den folgenden Optimierungen ließ sich die Performance des netzwelt.de Forums (über 130.000 User) um ca. 50 % bis 60 % steigern.
Wer ist online
Kontrollzentrum -> vBulletin-Einstellungen -> Wer ist online
- Anzeige von Gästen, deaktivieren
- IP-Adressen auflösen, deaktivieren
Kontrollzentrum -> Benutzergruppen verwalten -> Nicht registriert / Nicht angemeldet
- Kann "Wer ist online" sehen, deaktivieren
CSS-Stylesheets als Dateien speichern, aktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Style und Sprache
Wichtig: Es muss ein Verzeichnis namens 'vbulletin_css' im Verzeichnis 'clientscript' angelegt werden, in dem der Webserver Dateien erstellen darf (777).
Templatenamen als Kommentar in HTML-Quelltext schreiben, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Allgemeines
HTML-Ausgabe mit GZIP komprimieren, aktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Cookies und HTTP-Header
Einen Eintrag drunter den GZIP Kompressions-Grad auf 1 setzen. Ein höherer Wert treibt nur die Serverlast unnötig nach oben.
Forumsuche optimieren
Die Forensuche kann man optimieren in dem man der Tabelle "post" einen zusätzlichen Index verpasst. Dazu sollte man folgende Query ausführen:
Code:
ALTER TABLE "post" ADD INDEX "datelineuserid" ( "userid" , "dateline" );
Lebensdauer gecachter Beiträge erhöhen
Kontrollzentrum -> vBulletin-Einstellungen -> Servereinstellungen und Optimierungen
Den Wert sollte man auf mindesten 30 Tage setzen. Zu emfehlen sind 90 Tage.
Verzeichnisse/Scripte in der robots.txt ausschließen
Nicht relevante (unwichtige Inhalte für Suchmaschinenergebnisse) Inhalte sollten durch die robots.txt für die crawler gesperrt werden um keine zusätzliche Last zu erzeugen.
Als Grundeinstellung kann folgender Eintrag genutzt werden:
Code:
User-agent: * Disallow: /forums/admincp/ Disallow: /forums/clientscript/ Disallow: /forums/cpstyles/ Disallow: /forums/customavatars/ Disallow: /forums/customprofilepics/ Disallow: /forums/images/ Disallow: /forums/modcp/ Disallow: /forums/ajax.php Disallow: /forums/attachment.php Disallow: /forums/calendar.php Disallow: /forums/cron.php Disallow: /forums/editpost.php Disallow: /forums/global.php Disallow: /forums/image.php Disallow: /forums/inlinemod.php Disallow: /forums/joinrequests.php Disallow: /forums/login.php Disallow: /forums/member.php Disallow: /forums/memberlist.php Disallow: /forums/misc.php Disallow: /forums/moderator.php Disallow: /forums/newattachment.php Disallow: /forums/newreply.php Disallow: /forums/newthread.php Disallow: /forums/online.php Disallow: /forums/poll.php Disallow: /forums/postings.php Disallow: /forums/printthread.php Disallow: /forums/private.php Disallow: /forums/profile.php Disallow: /forums/register.php Disallow: /forums/report.php Disallow: /forums/reputation.php Disallow: /forums/search.php Disallow: /forums/sendmessage.php Disallow: /forums/showgroups.php Disallow: /forums/subscription.php Disallow: /forums/threadrate.php Disallow: /forums/usercp.php Disallow: /forums/usernote.php
.htaccess in die vhost.conf verschieben
Dieser kleine Trick bringt meiner Meinung nach die meiste Entlastung, nicht nur für das Forum.
Man sollte, falls möglich, die .htaccess in die vhost.conf (kann je nach OS variieren) verschieben da bei jedem Seitenaufruf geprüft wird ob die .htaccess überhaupt existiert und dann muss sie noch einmal ausgewertet werde. Das verursacht nur unnötige Datenzugriffe. Wenn die .htaccess aber in die vhost.conf verschoben wird, dann wird der Inhalt dieser in den RAM geladen und die Auswertung geht wesentlich schneller.
Wichtig: Nachdem die .htaccess verschoben wurde muss der Server neu gestartet werden, damit er sich den Inhalt in den RAM laden kann.
Yahoo Slurp Spider und Teoma/Ask Jeeves Spider ausbremsen
Diese beiden spider crawlen mehrere Tausend Seiten täglich und bringen kaum Trafik über die Suchmaschine. Deswegen kann man die beiden ohne Probleme etwas ausbremsen und denen "sagen", dass sie nur alle 60/90 Sekunden eine Seite aufrufen dürfen.
Dafür muss folgendes in die robots.txt eingetragen werden.
Yahoo Slurp Spider
Code:
User-agent: Slurp Crawl-delay: 60
Code:
User-agent: Teoma Crawl-delay: 90
No-Cache HTTP-Header senden deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Cookies und HTTP-Header
Mit dieser Einstellung muss die Seite nicht jedes Mal neu berechnet werden, sondern wird teilweise im Browsercache abgelegt.
Hitzahl der Themen/Anhänge sofort aktualisieren, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Servereinstellungen und Optimierungen
Wartezeit zwischen zwei Suchanfragen
Kontrollzentrum -> vBulletin-Einstellungen -> Suchmaschine: Einstellungen
Den Wert sollte man nicht auf 0 belassen, da die Forensuche sehr Lastintensiv ist
Bewertung eines Themas anzeigen, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Forum: Themenanzeige (showthread)
Weitere Optimierungen
Die folgenden Optimierungen wurden von mir nicht verwendet, sollen aber auch hilfreich sein.
Anhänge in das Dateisystem verschieben
Kontrollzentrum -> Anhänge -> Anhangs-Speicherart
Das Gleiche gilt auch für Avatare.
Suche für Gäste, deaktivieren
Finde ich persönlich den Gästen gegenüber nicht besonders fair.
Automatische Suche nach ähnlichen Themen, deaktivieren
Kontrollzentrum -> vBulletin-Einstellungen -> Suchmaschine: Einstellungen
Sehr Lastintensiv aber auch nützlich
Generell sollte man die Forensoftware und Plugins regelmäßig auf neue Updates überprüfen.
Die Hersteller verbessern ihre Software mit jedem Update was sich oft positiv auf die Performance auswirkt. So bringt z.B. die aktuelle vBSEO Version (3.1) gegenüber den Vorgängern einen kleinen Geschwindigkeitsvorteil.
Update ( 19.12.2008 ):
Auf vbulletin.org wurde das Add-On vB Optimise 1.0.2 veröffentlicht, mit dem sich die Templates, Styles und Phrasen cachen lassen, was für eine Entlastung der Datenbank und für eine schnellere Ladezeit sorgt.
Die Messungen mit Hilfe von Microstats (vB-Add-On) haben im NW-Forum eine durchschnittliche Verbesserung der Ladezeit um 0.3 Sekunden und eine Einsparung von zwei DB-Queries ergeben.
Update ( 05.02.2009 ):
Bestimmte Funktionen und Features für Gäste ausstellen ist ja schön und gut aber manche Funktionen, die die Datenbank belasten und für Gäste eher uninteressant sind, lassen sich nicht separat abstellen. Da hilft ein einfacher Trick, den man mittels des vBulletin-Hook-Systems realisieren kann. Dafür erstellt man im AdminCP ein neues Plug-In (Add-ons & Plug-ins -> Plug-in hinzufügen) und wählt als Einstiegspunkt "global_start" aus.
Der Einstiegspunkt "global_start" bedeutet, dass das Plug-In bei jedem Seitenaufruf aufgerufen wird.
Nun kann man für Gäste ganz speziell Funktionen deaktivieren, die sich normalerweise nur global deaktivieren lassen. Dafür trägt man in das Feld "PHP-Code des Plug-ins" folgendes ein:
PHP-Code:
// Benutzergruppe prüfen
if ($vbulletin->userinfo['usergroupid'] == 1){
// Moderatoren-Spalte anzeigen
$vbulletin->options[showmoderatorcolumn] = false;
// Geburtstage anzeigen
$vbulletin->options[showbirthdays] = false;
// Mitarbeiter-Liste anzeigen
$vbulletin->options[forumleaders] = false;
// Weitere Funktionen
// ...
}
Die Einstellungen oben sind nur ein kleiner Auszug, wie sie auf netzwelt.de eingesetzt werden. Durch gezieltes Deaktivieren von Add-Ons oder Teilfunktionen dieser, kann man den einen oder anderen Datenbankzugriff sparen. Bei einigen Tausend oder Hunderttausend Gästen täglich kommt eine schöne Summe an Datenbankzugriffen zusammen, die man dem Server einfach abnimmt.
Update ( 20.04.2009 ):
Eine Kleinigkeit ist mir noch aufgefallen, die man Gästen ersparen kann, wenn man keine globalen Hinweise (integriert seit vBulletin 3.7.4) anzeigt, bzw. nur Hinweise für Mitglieder anzeigt, wozu ich eh aus SEO-Sicht raten würde.
Hinweise für Gäste, lassen sich mit der bereits oben genanten Methode, mit dem Plug-In, deaktivieren (Das spart bei Gästen pro Seitenaufruf mind. einen Datenbankzugriff). Man gaukelt dem System einfach vor, dass keine Hinweise verfügbar sind, indem man das Array "noticecache" "leert".
PHP-Code:
// Benutzergruppe prüfen
if ($vbulletin->userinfo['usergroupid'] == 1){
unset($vbulletin->noticecache);
}
Kommentare 2
Kommentare
-
zum Punkt Bestimmte Funktionen abschaten (Update 05.02.2009)
Hallo, wo finde ich den eine Funktionsübersichtliste der Zusätzlichen
Funktionen, wo ich genau ersehen kann wie die Bezeichnung der
Funktion lautet, die ich abschalten könnte ?!?!?!Veröffentlicht: 24.06.2009 um 11:04 von Stoffel1974
-
Hallo Stoffel,
ob es eine Liste gibt, weiß ich nicht, zumindest habe ich, auf die Schnelle, eben keine gefunden.
Generell lassen sich alle Optionen mit $vbulletin->options[optionsname] ausschalten.
Du kannst aber in den Quellcode schauen und an der entsprechenden Stelle solltest du eine Zeile sehen, die ungefähr so aussieht:
Das was unter name="setting[ steht, also in den eckigen Klammern, das ist die Variable, die du brauchst und dort oben eintragen musst.PHP-Code:<input type="radio" name="setting[showmoderatorcolumn]" id="rb_0_setting[showmoderatorcolumn]_323" value="0" tabindex="1" />
GrußVeröffentlicht: 24.06.2009 um 15:23 von Arthur Spooner
Trackbacks 0









