Startseite > Blog > Permalinks für WordPress als CMS

Permalinks für WordPress als CMS

Vorab möchte ich mich bei Sergej Müller und Michael Preuß für ihre Unterstützung beim Auffinden und Lösen eines Problems hier ganz herzlich bedanken!

Sergej programmiert geniale Plugins für WordPress (u.a. AntiVirus, Antispam Bee, wpMAPS und wpSEO) und Michael das geniale WordPress Framework Xtreme One. Die Beiden sind aber nicht nur hervorragende Programmierer, sondern zeichnen sich auch durch vorbildlichen Support, ihre tiefgehenden WordPress-Kenntnisse und ihre Hilfsbereitschaft aus.

Aber was hat das mit dem Titel dieses Blogartikels “Permalinks für WordPress als CMS” zu tun?

Ganz einfach! Hier die Erklärung dazu in Kurzform: Sergej machte mich, als ich sein neuestes Plugin Cachify ausprobierte, dankenswerterweise darauf aufmerksam, dass die Startseite von www.dieter-welzel.de 758 Datenbankabfragen (Queries) benötigt. Dazu muss man(n) (Frau auch) wissen, dass sich die Anzahl der Datenbankabfragen bei WordPress-Installationen normalerweise im zweistelligen Bereich bewegt. D.h. auf www.dieter-welzel.de war die Anzahl der Datenbankabfragen zum Aufruf der Webseiten extrem hoch. Gleiches galt übrigens auch für meine Testinstallation auf diesem Webspace.

Da es ja an meinem auf dem WordPress Framework Xtreme One basierenden Childtheme hätte liegen können, wandte ich mich einer Empfehlung von Sergej folgend an Micha.

An dem Theme und meinen Plugins konnte es aber nicht liegen, denn ich schaltete testweise die Plugins aus und aktivierte mal andere Themes, aber das brachte keine nennenswert besseren Ergebnisse. Die Anzahl der Datenbankabfragen blieb trotzdem bei über 700.

Micha empfahl mir dann mal testweise das Plugin Debug Queries zu installieren und aktivieren. Das machte ich auf meiner Testinstallation. Micha stellte dann fest, dass ganz häufig rewrite_rules zu Datenbankabfragen führten. Daraus folgerte er, dass etwas mit der Permalink-Struktur auf www.dieter-welzel.de nicht stimmt.

Da auch das Drücken des Buttons Änderungen übernehmen im Administrationsbereich (Backend) unter Einstellungen->Permalinks die Anzahl der Datenbankabfragen leider nicht verringerte, war ich erst mal ratlos. Nicht aber Micha. Er erkannte, dass ich – unter Geschwindigkeitsgesichtspunkten – die denkbar ungünstigste Permalinkstruktur gewählt hatte: /%postname%/

Das erzeugt zwar auch bei Blogartikeln schöne einfache Permalinks mit dem Titel des Artikels, aber dadurch kann WordPress statische Seiten und Blogartikel nicht mehr einfach unterscheiden. Solange man nur wenige statische Seiten hat, hält sich die Zahl der zusätzlichen Datenbankabfragen noch in Grenzen. So habe ich unter www.webseiten-infos.de 20 statische Seiten. Dort kommt es dann auch “nur” zu 153 Datenbankabfragen für die Startseite. Anders sieht das aber auf www.dieter-welzel.de aus. Da habe ich meine ehemals mit Dreamweaver erstellte Website mit in WordPress integriert. Natürlich als statische Seiten. Insgesamt sind es derzeit 71 statische Seiten. Sprich ich nutze hier WordPress intensiv als klassisches Content Management System (CMS). Die Folge ist eine überproportionaler Anstieg bei den Datenbankabfragen. Ich möchte gar nicht wissen was passiert, wenn eine drei- oder gar vierstellige Zahl an statischen Seiten vorhanden ist.

Was nun tun?

Folgendes half mir weiter:

[amtap book:isbn=3937514708]

Das Ergebnis: Hast Du eine zweistellige Anzahl oder mehr statische Seiten in Deinem WordPress, dann sollte nach der Top Level Domain (TDL) in der Permalink-Struktur als Nächstes eine eindeutige Zahl folgen. Am Besten dürfte dazu die Post-ID geeignet sein. Sergej hat das also in seinem Blog auch schon für den Fall richtig gemacht, dass er die Anzahl der statischen Seiten dort nennenswert erhöht. Zwar sieht ein Permalink nur mit der Top Level Domain und dem Titel schöner aus, aber unter dem Gesichtspunkt Performance gehört da am Besten die Post-ID dazwischen.

Die Post-ID muss übrigens vorne bei der individuellen Permalink-Struktur sein, sonst verringert sich die Anzahl der Datenbankabfragen nicht.

Ich habe hier inzwischen die Permalink-Struktur entsprechend geändert und die Anzahl der Datenbankabfragen hat sich von 758 auf 63 (!) verringert! Das Schöne bei WordPress ist, dass es selbst auch permanente Weiterleitungen von den bisherigen Permalinks zu den neuen mit der Post-ID automatisch einrichtet. Backlinks auf die alten Permalinks führen damit weiterhin – wenn auch über die permanente Weiterleitung – zu ihrem Ziel und nicht zu einem 404-Fehler (siehe hier “Tote Links mit Umleitungen vermeiden” und “WordPress: Hilfreiche 404-Fehlerseite“).

Wäre noch ein kleines Problem: Es gibt hier einige interne Verlinkungen auf andere Blogartikel, die natürlich jetzt auch immer permanent umgeleitet werden. Diese kannst Du aber leicht mit dem WordPress-Plugin Broken Link Checker aufspüren und korrigieren. Aber Vorsicht! Dieses Plugin solltest Du nur im Bedarfsfalle aktivieren, denn es kann die Serverauslastung merklich erhöhen. Nicht, dass Dir dann der Hoster plötzlich Deine Website “abklemmt”.

Nochmals ein ganz großes Dankeschön an Sergej und Micha.

Ich hoffe, dieser Blogartikel hilft auch anderen WordPress-Nutzern die Performance ihrer Seiten zu verbessern.

15 Kommentare

  1. Ute sagt:

    Ich wusste noch, es wäre gut die ID mit drin zu haben, aber bei den “alten Blogs” hab ich bisher nichts umgestellt. Bei mir sind Abfragen jedoch auch nur so um die 100. Aber falls es doch mal mehr wird, ist es gut zu wissen, dass es doch ganz immens steigen kann, danke für den Tipp. :)

    • Dieter sagt:

      Ja, dass die Post-ID gut für die Performance ist, wusste ich auch. Ich wusste aber nicht, dass es bei der Nutzung von WordPress mit statischen Seiten (typischer Anwendungsfall als klassisches CMS) und als Blog es zu einer so massiven Erhöhung der Datenbankabfragen kommen kann, die überproportional zunimmt.

      Ebenfalls nicht gewusst hatte ich, dass die Post-ID am Anfang der individuellen Permalink-Struktur stehen muss, damit es nicht zu der massiv erhöhten Anzahl von Datenbankabfragen kommt.

      Naja, jetzt kann ich es ja künftig hier nachlesen. ;-)

  2. Ute sagt:

    Eben, dass es sich so massiv auswirken kann, darauf wäre ich nicht gekommen. Dass die ID am Anfang stehen muss ist für mich logisch, ich lese ja auch von links nach rechts… ;)

  3. Dieter sagt:

    @Ute
    Woher sollte ich wissen ob WordPress so programmiert wurde, dass die Permalinks von links nach rechts gelesen und analysiert werden? Bei Taschenrechnern gibt es da auch die Variante von rechts nach links. Außerdem hätte es ja auch sein können, dass WordPress erst mal unabhängig von der Platzierung zuerst ein eindeutiges Kriterium wie die Post-ID sucht. Deshalb testete ich Post-ID am Anfang und an Ende.

    @Frank
    Ist in Deinem Blog die Post-ID nicht am Ende der Permalinks? Habe das so in Erinnerung, kann das jetzt aber unterwegs mit dem Milestone schlecht nachprüfen ohne diesen Kommentar neu schreiben zu müssen.

    Habe im Web gelesen, dass bereits bei WordPress 3.1 die Permalink-Performance besser werden soll. Schau Merheim mal. Hast Du da nähere Infos?

    • Frank sagt:

      ja, ist am Ende – habe aber in diesem Blog wenig Seiten und! das Blog lebt schon recht lange, da war mein Wissen im Bezug auf WP noch anders und bisher war kein Bedarf auf eine Änderung notwendig; kenne das Problem von zig Kundenprojekten.

    • Dieter sagt:

      @Frank
      Beruhigend zu wissen, dass nicht nur ich vieles erst mit der Zeit lerne. Finde es aber erstaunlich, dass vor den möglichen negativen Auswirkungen meiner bisherigen individuellen Permalink-Struktur für die Anzahl der Datenbankanfragen nicht deutlich gewarnt wurde.

  4. Ute sagt:

    @Dieter für mich ist es logisch, weil auch WP am Ende nur eine ganz normale DB nutzt, aber nochmal: Keinesfalls hätte ich angenommen, dass es so viel ausmachen kann. Und kurz für dich, ja bei Frank ist die ID hinten, aber wenn er nicht viele statische Seiten hat stört es halt nicht.

    • Dieter sagt:

      @Ute
      WordPress ist, obwohl ich es auch schon über 3 Jahre nutze, immer wieder noch für Überrachungen gut.
      Danke für die Bestätigung der Permalink-Struktur bei Frank. Habe ich mich richtig erinnert. Kam noch nicht dazu selbst nachzuschauen. Die Netzverbindung im ICE nach Frankfurt ist nicht die Beste. ;-)

  5. Frank sagt:

    Der Hintergrund wurde von mir schon des öfteren dargelegt, die kleinste Einheit der Beiträge und Seiten sollte als Startpunkt stehen, dies ist die ID.
    Man kann sich das bildlich wie eine Suche vorstellen, die in die DB geht und den Artikel sucht: beginnt man mit einer Kategorien, so muss eben erst alles aus cat in den Speicher und dann wird darin der nächste Schlüssel gesucht. Daher ist der Start mit einem kleinen Schlüssel am besten geeignet.
    Die Seiten sind dazu noch eine besonderes Highlight, da hier die Performance nicht so optimal ist, soll mit den kommenden Version besser werden. Aber nicht selten wird WP da auch falsch verstanden, denn die Beiträge eignen sich nach Prüfung der Anforderung oftmals besser.

  6. Micha sagt:

    Ein var_dump( get_option( ‘rewrite_rules’) ) brachte beim Dieter ein Array mit 2799 Einträgen zu Tage.

    • Dieter sagt:

      @Micha
      2799 Einträge schreckt mich mindestens so auf wie 758 Datenbankabfragen. ;-)
      Danke für die ergänzende Info.

  7. Dave80 sagt:

    Ich habe wirklich viele WordPress-Blogs mittlerweile laufen. Und ich schwöre sowohl auf die Plugins von Sergej als auch auf den WP-Supercache. Sonst ist die Performance bei stark frequentierten Seiten einfach zu schwach.

    • Dieter sagt:

      Ja, die Plugins von Sergej sind absolut empfehlenswert.

      WP-Supercache setze ich nicht ein. Wichtiger war hier die Optimierung der Permalinks. Allerdings setze ich inzwischen Hypercache ein. Wenn ich mal wieder mehr Zeit habe, schreibe ich darüber.

  8. maxe sagt:

    Für die interne Verlinkung hat Sergej vor einiger Zeit auch eine Lösung vorgestellt: http://playground.ebiene.de/2388/wordpress-shortcode-links/
    WordPress hat zwar mittlerweile von Haus aus auch ein eigenes Verfahren intern zu verlinken, aber auch hierbei sind die Links absolut.

    • Dieter sagt:

      Diese Lösung für die interne Verlinkung von Sergej ist nett, aber nichts für mich, da die dort genannten Nachteile die Vorteile für mich überwiegen. Bei mir änderte sich bis jetzt erst einmal die interne Linkstruktur. Mit dem WordPress-Plugin Broken Link Checker habe ich die Umleitungen bei den internen Links erkannt und leicht korrigieren können.

      Gleichwohl danke für Deinen Hinweis, denn Leser meines Blogartikels können an der Lösung von Sergej interessiert sein.

Hinterlasse eine Antwort

Deine Mailadresse bleibt geheim. Pflichtfelder sind mit * gekennzeichnet.

Kommentare prüfe ich grundsätzlich vor einem Freischalten!
Ich bitte um Verständnis für diese Spamschutz-Maßnahme.

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Webseite veröffentlicht am Donnerstag, den 13. Januar 2011, um 00:53 Uhr,
zuletzt geändert am Freitag, den 23. Dezember 2011, um 21:00 Uhr.
Tags: , , , , , ,


Statistik: 72 Seiten, 346 Blogartikel, 1.068 Schlagworte, 1.296 Kommentare, 130 Feedleser.
© 2002 - 2014 | WordPress - Mein Layout basiert auf YAML und wird durch Xtreme One angetrieben.