10. März 2009
Bei einem grossen Besucheransturm kann es schon mal vorkommen, dass Seiten nur mühsam laden. Das hat mehrere Ursachen, doch meistens ist auch das WordPress Theme daran Schuld. Unnötige Datenbankabfragen und sehr grosse Template-Dateien sind für Besucher und Administrator gleichermassen nervig.
In diesem Beitrag werde ich einige unnötige Template Tags vorstellen, die man mit beinahe hundertprozentiger Sicherheit durch statische Angaben ersetzen kann, was eine Performancesteigerung des Blogs bedeutet. Und wer will nicht ein schnelles Weblog?
In der header.php findet man meistens folgende Übeltäter:
<?php language_attributes(); ?> - Im HTML-Doctype gibt diese Funktion an, welche Sprache benutzt wird. Und weil dies ja sicher immer die selbe ist, könnt ihr diesen Template Tag einfach durch dir="ltr" lang="de-DE" ersetzen.<?php bloginfo('html_type'); ?> - Da die Ausgabe immer HTML bleibt, könnt ihr hier auch text/html schreiben.<?php bloginfo('charset'); ?> - Die Codierung sollte man eigentlich nie ändern. Standard ist UTF-8.<?php bloginfo('stylesheet_url'); ?> - Euer Stylesheet wird sich immer am selben Ort befinden. Schreibt also einfach http://blog.de/wp-content/meintheme/style.css hinein.<?php bloginfo('stylesheet_directory'); ?> - Manchmal wird auch auf andere Dateien aus eurem Theme (Bilder, weitere Stylesheets, usw.) verwiesen. Kann man einfach mit der entsprechenden URL ersetzen. <?php bloginfo('template_url'); ?> hat übrigens die gleiche Funktion!<?php bloginfo('rss_url'); ?>, <?php bloginfo('comments_rss2_url'); ?> und <?php bloginfo('atom_url'); ?>Folgende unnötigen Template Tags sind eher allgemein und können in verschiedenen Template-Dateien vorkommen:
<?php echo get_option('home'); ?> und - Falls ihr eure Domain nicht wechselt, bleibt die Adresse zu eurem Blog gleich. Ausgegeben wird hier die Adresse à la http://blog.de/<?php bloginfo('name'); ?> - Den Namen eures Blogs könnt ihr durchaus selber schreiben und müsst dazu nicht unbedingt ein Template Tag nutzen.<?php bloginfo('description'); ?> - Bei der Beschreibung genau das Gleiche!<?php echo get_num_queries(); ?> Queries. <?php timer_stop(1); ?> Sekunden. - Die Anzahl der Datenbankabfragen und die Ladezeit braucht man eigentlich nicht zwingend auszugeben.© 2012 Schweizer WordPress Magazin | Realisiert von Pascal Birchler | 52 Queries. 0,562 Sekunden.
Das mit dem
get_option('home')habe ich mich schon oft gefragt. Das gleiche (auch bei Domainwechsel) erziele ich doch mit[a href="/"]Das mit den unnötigen Datenbankabfragen ist, mit Verlaub, Quatsch: Sämtliche Werte werden so oder so aus der Datenbank geholt, unabhängig davon ob man sie nun ausgibt oder nicht. Der “Geschwindigkeits”gewinn bewegt sich also im Promille-Bereich und rechtfertigt meiner Meinung nach nicht den Verlust an Flexibilität, den mir diese Tags geben. Ich will doch nicht jedes mal die Stylesheet-URL anpassen, wenn ich ein neues Theme ausprobiere. Einzig die Aufrufe zum RSS-Feed könnten bei einem wirklich(!) gut besuchten Blog etwas bringen, da die Permalink-Struktur konstruiert werden muss.
@Jeriko Es bewegt sich nur so lange im Promille-Bereich, wenn man wenige Besucher hat. Solltest du also mal auf die Startseite von Digg kommen, wärst du froh über ein schlankeres Blog. ;-)
Du musst auch nicht bei jedem neuen Theme die Stylesheet-URL anpassen. Es lohnt sich ja nur wenn du das Theme nicht andauernd wechselst. Und wenn, müsstest du es ja nur ändern, weil es eine neue header.php ist, die anderen Änderungen haben dann gar keine Auswirkung mehr.
Danke für den interessanten Artikel
Hi Pascal,
ich habe auf Texto vieles statisch, einfach, weil ich ja hauseigene Designs verwende,
der Server ist eine 8 Gigabyte *Maschine*, die wirklich schnell ist,
sollte je der absolut unwahrscheinliche Fall eintreffen, dass mein deutschsprachiges Magazin eine Digg Startseite absahnt – aktivier ich Super Cache, weil sonst nichts mehr hilft ;)
was wirklich verlangsamt, sind die ganzen Twitterabfragen, – alles was gezählt wird:Top Kommentatoren etc. und umständlichst geschriebene Loops, oftmalig ururururaltes PHP das wo händisch dazugeschrieben wird,
ich fand letztens einen Blog, wo ein “Programmierer” in PHP3 (!!) was dazucodete und jeder mal bei WP die Schuld des nicht-Funktionierens suchte.
dies sind Performance Killer!
schlecht programmierte Plugins etc..
lg
Grundlegend stimme ich der Ansicht zu. Ob PHP oder reines HTML, gibt es da wirklich einen Unterschied in der Ladezeit? Liegt halt von verschiedenen Faktoren ab. Aber ab wann ist die beschriebene Schwelle bei einem Blog für ein “großen Besucheransturm” angesetzt? Jeriko beschreibt schon meine Bedenken ziemlich treffend, obwohl ich persönlich in der Praxis noch keine Erfahrungen diesbezüglich machen konnte.
Hallo Pascal,
auf so nahe liegende Maßnahmen kommt man manchmal gar nicht. Selbst wenn einzelne davon nur im Promillebereich liegen, finde ich es wichtig, seine Seiten so weit es geht zu optimieren. Wenn Serverlast eingespart werden kann, ist das nur gut (vor allem wenn es der eigene ist).
Danke für die Hinweise!
Für mich als Anfänger in php, der sich zudem ein eigenes Template für WP stickt, ist es ungemein hilfreich, wenn ich “straight” auf das (beispielsweise stylesheet.css) zeige, das ich meine … dieser Artikel war für mich sehr hilfreich! Danke!
Das Stylesheet sollte eigentlich immer im Theme-Ordner liegen und style.css heissen.
wäre aber kein Problem, wenn “hinter” dem style.css eine ganze Kaskade von weiteren css-files liegt, oder? Meine ersten zaghaften Tests zeigen, dass das ohne Probleme funktioniert.
Nein, das geht völlig in Ordnung. Ich empfehle, diese Stylesheets (z.B. ein Framework) jeweils über @import am Anfang von style.css einzubinden
yepp, genau so hab’ ich es gemacht. Für mich als Anfänger ist es leichter, die php-Tags in ein bestehendes Framework einzubauen, als den umgekehrten Weg zu gehen. Jeder fängt mal an :-)