WordPress: Permalink-Struktur und Performance

WordPress-Logo Das eine falsche Permalink-Struktur eine WordPress-Installation gehörig ausbremsen kann ist nichts neues. Ich habe vor knapp 1,5 Jahren einen Artikel zum Thema Permalinkstruktur verfasst: Die richtige Permalinkstruktur.

Schon damals und eigentlich einige Zeit vorher (siehe hier und hier) war klar, dass man die Permalinkstruktur einer WordPress-Installation nicht mit einer “Textkomponente” wie z. B. Kategorie-, Tag- oder Artikel-Namen anfangen sollte.

Die offizielle Dokumentation sagt folgendes dazu:

For performance reasons, it is not a good idea to start your permalink structure with the category, tag, author, or postname fields. The reason is that these are text fields, and using them at the beginning of your permalink structure it takes more time for WordPress to distinguish your Post URLs […]

Besser ist es, wenn die Permalinkstruktur mit einer “nummerischen Komponente” wie z. B. Beitrag-ID, Jahr etc. anfängt, hier noch einmal die offizielle Dokumentation:

So, it is best to have at least two path segments in your post’s permalink structure such as /%year%/%postname%/ or even /posts/%postname%/. (Some people recommend /%post_id%/%postname%/ which works for performance reasons but others recommend against it because it is unfriendly to users in the many contexts in which users interact with URLs.)

OK und warum wärme ich dieses alte Thema noch einmal auf? Weil man aktuell auf So really, don’t use just /%postname%/ as your permalink structure ein besonders krasses Beispiel aufgezeigt wird, wie die Permalinkstruktur die Performance heftig ausbremsen kann.

Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienst­leistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.

Verwandte Beiträge:

23 Kommentare

  1. Nur den Postname zu nehmen kann natürlich schief gehen, es spricht in meinen Augen aber nichts dagegen eine Struktur wie zum Beispiel postname-postid zu nehmen.

    Ich fahr damit eigentlich ganz gut mit über 16.000 Artikeln inzwischen. Ich muss allerdings auch sagen das ich wenig normale Seiten hab.

    Konkret sieht es bei mir so aus:

    /%postname%-%post_id%.html

    Angeblich soll auch dieses angehängte .html gut für die Unterscheidung sein. Ob das richtig ist weiß ich allerdings bis heut nicht, hab mich nie wirklich damit beschäftigt?!

    1. Hallo Kevin,

      ja, deswegen schrieb ich auch:

      Besser ist es, wenn die Permalinkstruktur mit einer “nummerischen Komponente” wie z. B. Beitrag-ID, Jahr etc. anfängt

      Oder war dein Hinweis an Markus adressiert?

  2. @Kevin Nun ja Chris sagt so, ich denke es eben nicht. Ich wüsste auch nicht wie in diesem Zusammenhang soviel Queries enstehen sollten ehrlich gesagt. Es wird bei bestimmten Permalinks ziemlich viel für JEDE Seite in die DB eingetragen um zu unterscheiden, bei meiner Methode wird da mal so gut wie gar nichts eingetragen, das ist denke ich eigentlich ein gutes Zeichen. Wie es jetzt natürlich aussehen würde wenn ich viele normale Seiten (pages) hätte, kann ich wie gesagt nicht sagen.

  3. Ich hab das Drama auch mitverfolgt.
    Meine Linkstruktur wäre auch so ein Fall. Was ich nie so ganz verstanden habe: Was passiert eigentlich, wenn man die Permalinkstruktur ändert? Dann funktionieren alle Links intern weiterhin, aber Links von aussen haben ein Problem (wenn sie irgendwo in der alten Form grspeichert sind). Das gibts den Fehler 404. Oder nicht?
    Ich hab dazu schon so viel kreuz und queres gelesen, dass ich mich nicht mehr auskenne.

  4. Oder war dein Hinweis an Markus adressiert?

    Jap, Hinweis war an Markus adressiert.. 🙂

    Nun ja Chris sagt so, ich denke es eben nicht. Ich wüsste auch nicht wie in diesem Zusammenhang soviel Queries enstehen sollten ehrlich gesagt.

    Dann wäre mal ‘nen kleiner Test interessant.

  5. Dann funktionieren alle Links intern weiterhin, aber Links von aussen haben ein Problem (wenn sie irgendwo in der alten Form grspeichert sind). Das gibts den Fehler 404. Oder nicht?

    Scheinbar kriegt WordPress das mittlerweile selber hin. Ich hab bisher sonst immer ‘nen Plugin benutzt (scheint nicht mehr nötig, oder Vlad?).

  6. Das würde mich auch interessieren! Kann ich so mir nichts dir nichts die Permalinkstruktur ändern, oder muss ich irgendwie rumbasteln?

  7. Die Permalinkstruktur konnte ich einfach so ändern. Das Geschwindigkeitsproblem trat bei mir mit einer Permalinkstruktur /%postname%/ und vielen statischen Seiten (pages) auf. Solche URLs sehen zwar besonders gut aus, aber die Anzahl der Datenbankabfragen kann gewaltig nach oben gehen. Nähere Infos dazu auch in meinem Blogbeitrag “Permalinks für WordPress als CMS“.

  8. Ich habe im Moment als Struktur /%postname%.html. Wenn ich das hier richtig lese, haben diejenigen, die damit Probleme hatten einige 1000 Beiträge in ihrem Blog. In den verlinkten Beitrag hingegen ist die Rede von Problemen ab ca. 20 Beiträgen.

    Kann man das näher eingrenzen. 20 werde ich sicher in den Projekt überschreiten. Aber auf über 100 Seiten und Artikel wird das Projekt bestimmt nicht wachsen.

  9. Was mir in dem Zusammenhang seit gestern nicht mehr aus dem Kopf geht ist folgendes:

    Man kann doch quasi alles mögliche in WordPress aktivieren/deaktivieren. Ich arbeite zum Beispiel auch mit eigenen Posttypen. Im Prinzip könnte man die Seiten ja auch als eigenen Posttyp gestallten, da wird dann auch nicht für alle ein Eintrag in der wp-Options – rewrite_rules vorgenommen sondern auch nur ein, ich nenn es mal “Grundeintrag”.

    Wäre es möglich die Seiten komplett zu deaktivieren? Theoretisch müsste man ja nur den Posttyp entfernen.

  10. PS: Sorry hab ich vorher vergessen. Hab mal meine Startseite analysiert:

    Total query time: 0.03146s for 37 queries.

    Allerdings ist das in der Beta Umgebung wo noch einiges mehr an Plugins und Zeug drinsteckt. Auf der Live Seite dürfte das also noch weniger sein.

  11. Also ich habe das auch gerade mal bei mir getestet:

    Egal ob die Struktur Jahr/Monat/Tag/Postname ist, oder nur der Artikelname: ich werde gerade dreistellig.

  12. Ich habe nun meine Permalinkstruktur von /%postname%/ abgeändert zu /%year%/%monthnum%/%day%/%postname%/ und bekomme nun intern einen 404, da er die Seiten nicht mehr findet, darf alles manuell nachbearbeiten. Oder gibt es da eine einfache Lösung?

  13. Habe auch in den letzten Tagen meine Linkstruktur umgestellt. Leider erzeugt das ganze ja bei Verlinkungen und bei Google massenhaft 404er, deshalb habe ich die alte Struktur per 301 auf die neue umgeleitet.
    Ich nutze dazu das Plugin “Permalinks Migration”, dort kann man die alte Linkstruktur eingeben und dann die Permalinks ändern.

  14. Abend Freunde,
    ich personlich endere ni was an Permalinkstruktur,so eine /%year%/%monthnum%/%day%/%postname%/ ist auch nutzlich,man weiss genau wann Artikel geschrieben ist ❗

  15. Sind von den Performance Problemen nur “Seiten” betroffen?

    Ich habe /%postname%/ als Permalinkstriktur

    Ich habe ziemlich viele Seiten (500) angelegt, ohne bisher Probleme zu haben. Bin ich auf der sicheren Seite, wenn ich jetzt nur noch Artikel anlege? Oder kann es dann trotzdem zu Performance Problemen kommen?

  16. Ich habe auch bei einem Projekt die Permalink-Struktur: /%postname%.html

    Und mittlerweile (600+ Artikel & 100+ Seiten) merke ich auch, dass die Perfomance den Bach runter geht. Den Beitrag von Chris bzgl der Permalinks habe ich schon lange in der ToDo Liste, aber auch bei mir überwiegt die Angst positionen bei Google zu verlieren. Die Seite ist mit einigen wichtigen Keywords auf Platz 1, da möchte man nichts riskieren. 😉

    Hat mittlerweile jemand Erfahrungen sammeln können, wie man trotz Umstellung der Permalink-Struktur die “alten” Platzierungen behalten kann?

  17. So, habe nun mit dem Plugin die Permalinkstruktur migriert, dafür bekomme ich bei Seiten nun einen 404. Wäre nicht weiter tragisch, wenn das Impressum nicht als Seite angelegt wäre…
    Nutze Wp 3.2.1. Weiß jemand weiter?

  18. […] soll – wie Perun sehr schön in seinem Beitrag beschreibt – die Wahl eines Permalinks einschließlich Ziffer für eine bessere Performance sorgen. Gut, […]

Kommentare sind geschlossen.