By Sebastian | February 9, 2010
My bullshit detector ticked loud on a tweet today. Now that I’m digging deeper, it rattles deafening. I’m smelling some serious SEO bullshit.
By the way, do you like the clean and short title? I do. Especially when it’s displayed right below this site’s mission statement. Stay tuned.
So what raised a red flag in Dan Sharp’s tweet? He linked to Many SEO Experts Give Wrong Advice Regarding WordPress Permalinks. I’ve condomized this link for a reason. Read on.
Rob from a hosting service based in Portland, Oregon, explains why a 30 days money back guarantee is a good idea, at least when it comes to hosting content rich high traffic WordPress blogs. Full stop. Actually, he claims that some of the most popular search geeks (for example Scott Hendison, Aaron Wall, Joost de Valk, Michael Gray, Matt Cutts, Jordan Kasteler, Vanessa Fox, Adam Audette, Stephan Spencer, Danny Sullivan …) are handing out bad advice on WordPress permalinks. He forgot to mention yours truly, but he’s cursed anyway, so this tiny sin is forgiven easily.
According to Rob,
/%postname%/ permalinks shouldn’t be used, because they don’t perform with WordPress. He recommends
/%post_id%/%postname%/, or crap like that. Of course WordPress tells us that those temporary performance issues with
/%postname%/ permalinks are solved:
Starting Permalinks with %postname% is strongly not recommended for performance reasons. *** Note – this has been changed and is ok to do since ver. 2.0 [Source]
Rob didn’t update his SEO bashing when the bug was “fixed” (in fact, it was just kinda optimized and is not yet really fixed, but at least
/%postname%/ permalinks don’t totally jam a blog any more), perhaps because in its current shape his post is nice celeb-bait driving traffic to his hosting service. I don’t care about his reasoning. I’m outing him because he spreads false advice. Even in the first place, before WordPress increased the performance of
/%postname%/ permalinks, he took a devious approach.
When a popular CMS develops such a critical bug, the right thing to do is posting a warning like “Don’t update WordPress to version x.xx until the permalink bug that slows down your blog’s performance is fixed”. Accepting such a bug as a feature, and slamming SEO experts for recommendations that were based on a WordPress version that could handle
/%postname%/ permalinks without significant performance issues, is malicious. Doing that as a spokesperson of a hosting service is damaging to the company’s reputation. In other words: Bullshit.
Done with this guy. Next.
Apropos bullshit. Reread this rant’s title. Obviously it’s not about a tiny hosting company’s failures. This Weberz hosting dude was about to reveal a real bummer, only he didn’t notice it:
WordPress is fucked up beyond any repair (FUBAR)
In other words: WordPress is utter bullshit. It’s a neat CMS for a personal blog, but it’s architecture is not suitable for professional use. Given its popularity and the number of trafficked blogs utilizing WordPress, that’s seems to be a controversial statement.
Not really. Just because a piece of shit is popular, that doesn’t mean it’s good. Stalin, Hitler, Mao and Pinochet were “popular”, but as dead bodies I like them better. Cobol and RPG/II were popular, but we don’t code in these languages any more, at least not in Web development. WP-Cache and similar plug-ins can prolong the dying of a trafficked blog.
Fortunately, some IT principles survived all paradigms so far, for example normalization, aka good database design. Not that WordPress developers ever considered database design important. Franky, their ERM doesn’t even deserve the predicate “Bullshit” – it’s way worse than any permutation of bullshit I can think of.
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 from Page URLs (which always use the text
“page slug” as the URL), and to compensate, WordPress stores a lot of
extra information in its database (so much that sites with lots of
Pages have experienced difficulties). So, it is best to start your
permalink structure with a numeric field, such as the year or post ID.
The latter is interesting, but not understandable without some technical backgrounds. WordPress stores data used to build URIs in different database tables (wp_posts, wp_terms, …). The rules necessary to identify a piece of content (post, page, tag or category page, …) from its URI are stored in a text field in one tuple of the wp_options table. WordPress evals these rules to determine whether an URI points to a post, a page, or whatever, performing one or more database queries per rule.
On a blog with many posts, these “redirect rules” can exceed the limits of a MySQL LARGETEXT attribute, that means they can’t be stored at all. Before this happens, IOW before WordPress crashes with a database error, an HTTP request of a post can result in 2,400 or more database queries just to map its URI to a piece of content. Wow. The next best procedure to slow down page load time is an infinite loop.
Looking at this idiotic software architecture, I’m wondering how much extremely compressed bullshit can be shoved into a developers skull before it explodes out of stupidity.
I don’t know how WordPress increased the performance of
/%postname%/ permalinks, and I really can’t be bothered to research it in a conglomerate of unreadable spaghetti code that these CMS clowns produce, mixing up markup with badly abstracted PHP stuff. However, it doesn’t scale, and without significant structural optimization it cannot scale.
What I can tell is that without a database table that stores URIs (URI as a unique index) with references (uri_id as foreign key in all related tables or so) to various entities like posts/pages/categories/tags and so on, preferably iplementing historizing to handle changes of the permalink settings with 301 redirects, WordPress cannot solve the performance problem.
CMS developers should know that “universal” in URI doesn’t mean “anything I can grab from various attributes stored in a couple of databse tables without properly implemented functionality that guarantees that each URI is unique on the Internet”. “URI” is an object that as an attribute of anything that counts as “piece of content” maintains its unique address, across the Web.
If you aim at high traffic, WordPress is not for you. Since SEO is about generating high volumes of traffic, WordPress is not for your clients.
The reaction by Michael Gray Is WordPress Good or Bad for SEO? might as well answer a few questions from the comments.