No utilices /%postname%/ como estructura de enlaces permanentes

Es interesante ver como no siempre la estructuras de enlaces permanentes que nos gustan para hacer bonitas nuestras URLs con WordPress son las mejores opciones. Siempre me ha gustado usar /%postname%/ como estructura de enlaces para mis blogs. Pero cuando tienes muchas páginas el sitio puede sufrir y estar caído posiblemente por esta estructura. Por eso estoy tomando la decisión de cambiar mi estructura de enlaces y que empiece o acabe con un número.

Por resumir este artículo podemos decir que no es lo mismo que nuestro WordPress busque en la base de datos nuestras entradas sabiendo la URL que sabiendo el ID de la entrada además del la URL bonita. Normalmente cuanto tenemos muchas entradas el proceso de búsqueda de URL con /%postname%/ se hace realmente pesado para nuestro servidor lo que sin duda consume más memoria y puede hacer muy lenta la carga de nuestro servidor, includo hacer que no esté disponible por falta de memoria y saturación.

El ejemplo que nos muestras en DigWP nos muestra como el número de llamadas necesarias para resolver una dirección web con /%postname%/ es muchísimo mayor que si optamos por una solución de URLs como la que nos recomienda WordPress por defecto /%year%/%monthnum%/%postname%/.

Aquí podéis ver una captura de la información que nos reporta W3 Total Cache usando /%postname%/:

Y aquí lo mismo pero usando la estructura /%year%/%monthnum%/%postname%/:

Es evidente que el número de llamadas a la base de datos se reduce mucho con una estructura de enlaces en WordPress que facilite la búsqueda de información, si esta incluye más información como año y mes, pero además si jugamos con el ID de las entradas será mucho más eficiente para nuestro sitio y para reducir la carga y llamadas a la base de datos.

Estamos ante un posible problema de rendimiento para sitios grandes. ¿Quizás WordPress necesite una base de datos con los enlaces permanentes? Andrew Nacin, desarrollador del core de WordPress, es quien genero las capturas de llamadas a base de datos de arriba y que sin duda nos clarifican mucho el tema.

En la documentación de Wordpress, The Codex, comentan información como:

Por razones de rendimiento, no es una una buena idea que tus estructura de enlaces permanentes contengan categoría, tag, autor u otros campos de la entrada. La razón es usar esas variables en tus estructura de enlaces permanentes hace que WordPress tarde mucho más tiempo en distinguir que es una página y que una entrada, a la vez que tiene que consultar más información en tu MySQL. Por eso recomendamos utilizar estructuras de enlaces del tipo /%year%/%postname%/ o /posts/%postname%/.

¿Por qué se incrementa tanto el número de llamadas a las bases de datos? Ni idea. ¿Por qué WordPress utiliza la base de datos para resolver la URLs cuando usas /%postname%/? Sí. Por eso si utilizamos sus recomendaciones reducimos las llamadas a la base de datos. WordPress debe mejorar más este punto de enlaces permanentes o URLs bonitas.

¿Cómo afecta esto al SEO?

Pues no tiene porque afectar. Para cambiar las URLs por nuevas tenemos muchas opciones y plugins para crear redirecciones 301 con las antiguas direcciones hacía las nuevas.

¿Qué estructuras de enlaces permanentes son las mejores?

Aunque al llegar al final de este artículo igual ya tienes claro que estructura de enlaces permanentes (permalinks) deberías usar para que tu WordPress no consuma toda la memoria de tu servidor y haga muchas más llamadas a bases de datos de las necesarias.

Las recomendaciones de WordPress son:

  • /%year%/%postname%/
  • /entradas/%postname%/
Y mis recomendaciones para una estructura de enlaces son:
  • /%postname%/%post_id%/
  • /%post_id%_%postname%/
  • /%postname%_%post_id%/
Esta es una captura para que veáis el número de llamadas a bases de datos que genera carrero.es con su estructura de enlaces.