Nützliches

Unnötige Template Tags

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?

10+ unnötige Template Tags

In der header.php findet man meistens folgende Übeltäter:

  1. <?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.
  2. <?php bloginfo('html_type'); ?> - Da die Ausgabe immer HTML bleibt, könnt ihr hier auch text/html schreiben.
  3. <?php bloginfo('charset'); ?> - Die Codierung sollte man eigentlich nie ändern. Standard ist UTF-8.
  4. <?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.
  5. <?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!
  6. <?php bloginfo('rss2_url'); ?> - Der RSS Feed bleibt immer gleich, deshalb könnt ihr diese unnötige Abfrage gleich durch die Adresse ersetzen. Genau so auch <?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:

  1. <?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/
  2. <?php bloginfo('name'); ?> - Den Namen eures Blogs könnt ihr durchaus selber schreiben und müsst dazu nicht unbedingt ein Template Tag nutzen.
  3. <?php bloginfo('description'); ?> - Bei der Beschreibung genau das Gleiche!
  4. <?php echo get_num_queries(); ?> Queries. <?php timer_stop(1); ?> Sekunden. - Die Anzahl der Datenbankabfragen und die Ladezeit braucht man eigentlich nicht zwingend auszugeben.
  5. Besonders mutige können an dieser Stelle auch die automatische Auflistung von Seiten oder sogar Kategorien durch statischen Code ersetzen. Aber damit kann man ein Theme sehr schnell zerschiessen. Auf jeden Fall müsste man nur den generierten Quellcode anstelle der Template Tags einfügen...

12 Kommentare zu “Unnötige Template Tags”

  1. Marcel am 10. März 2009 um 18:28

    Das mit dem get_option('home') habe ich mich schon oft gefragt. Das gleiche (auch bei Domainwechsel) erziele ich doch mit [a href="/"]

  2. Jeriko am 10. März 2009 um 18:42

    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.

  3. Pascal Birchler am 10. März 2009 um 20:21

    @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.

  4. Eisenmangel Symptome am 11. März 2009 um 06:34

    Danke für den interessanten Artikel

  5. Monika am 12. März 2009 um 08:44

    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

  6. doubleR am 15. März 2009 um 00:41

    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.

  7. Aro am 15. März 2009 um 17:22

    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!

  8. Raimund am 20. April 2009 um 12:05

    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!

  9. Pascal Birchler am 20. April 2009 um 12:52

    Das Stylesheet sollte eigentlich immer im Theme-Ordner liegen und style.css heissen.

  10. Raimund am 21. April 2009 um 16:51

    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.

  11. Pascal Birchler am 21. April 2009 um 17:26

    Nein, das geht völlig in Ordnung. Ich empfehle, diese Stylesheets (z.B. ein Framework) jeweils über @import am Anfang von style.css einzubinden

  12. Raimund am 21. April 2009 um 21:07

    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 :-)

2 Pingbacks

Kommentieren