Cuando nos ponemos a optimizar la velocidad de carga de WordPress uno de los parámetros que hay que controlar son todos los recursos que servimos desde URLs externas, especialmente los que contienen cadenas de petición.
Y son muchas las veces las que echamos las culpas a plugins e incluso el tema – con razón seguramente – de la carga de estos recursos externos, encima de manera no óptima.
Pero resulta que nada más instalar WordPress, y por defecto, sin cambiar ningún ajuste, ya estamos sirviendo recursos desde servicios externos mediante las conocidas como url query strings ¿sabes a qué me refiero?
Índice de contenidos
Los Gravatares son el demonio ¿o no?
A los gravatares, a ese servicio de Automattic, Gravatar.com, que sirve los avatares de los usuarios que comentan, incluso nuestro propio avatar de usuario.
En los ajustes de comentarios de tu WordPress, nada más instalarlo, está activa la carga de avatares desde Gravatar.com, y esta carga hace que cada vez que hay un usuario registrado, tú mismo por ejemplo, o un comentario en una entrada, se generen peticiones externas mediante query strings al servicio Gravatar.com, para saber qué avatar mostrar para tal o cual correo electrónico.
Creo que ya te estás imaginando la cantidad de peticiones que puedes generar en una entrada de … digamos … ¿60 comentarios?.
Alguno me dirá «bueno, si ya nadie comenta en los blogs«, pero sí que generas peticiones aunque tengas pocos comentarios, sino multiplica, o pásate por la pantalla de gestión de comentarios de tu WordPress ¿a que ves unos cuantos? Pues eso.
Ni te cuento si tienes foros o una red social con BuddyPress.
La solución salomónica
Ahora me pondría académico y en modo developer a sugerirte algún código o función, pero en realidad es muy fácil deshacerse de todo esto que estamos hablando.
Solo tienes que ir a tu escritorio de WordPress a Ajustes > Comentarios y desactivar los avatares. Guardas los cambios y ya está, conseguido.
Bonito ¿verdad?
Lo mejor es que este ajuste se aplica aunque estés usando los comentarios de JetPack o sistemas similares.
¿A que queda mono?
Modo developer ON
Ahora bien ¿no quieres ser tan radical? Nos ponemos el mono de trabajo y vamos a ser algo más finos.
La idea es, al menos, que no se generen URL query strings desde los gravatares, para que tarden menos en cargarse las peticiones y, de paso, nos tenga algo más de cariño Google PageSpeed y nos ponga mejor puntuación.
Lo que trataremos de hacer es que WordPress no haga peticiones del tipo
Método 1
Para conseguir quitar ese tipo de parámetros de las peticiones a Gravatar tienes que añadir el siguiente código a tu plugin de funciones:
/* Quitar parámetros de query string de los Gravatars */ add_filter( 'get_avatar_url', 'isa_avatar_remove_querystring' ); function isa_avatar_remove_querystring( $url ) { $url_parts = explode( '?', $url ); return $url_parts[0]; }
Método 2
En ocasiones el código anterior no funcionará. Me refiero a si usas alguna solución (o tema) que emplea llamadas a get_avatar()
con elementos de imagen personalizados.
Me refiero a cuando tu plugin, tema o lo que sea (tú mismo cacharreando) usas algo como esto:
echo get_avatar( $comment, 100 );
En estos casos el código a utilizar sería el siguiente:
// quitar query string de Gravatars $avatar_src = get_avatar_url( $comment ); // quitar parámetros de query string de gravatars $url_parts = explode( '?', $avatar_src ); $clean_src = $url_parts[0]; // Display the image <?php <img alt='avatar' src='<?php echo esc_url( $clean_src ); ?>' class='avatar avatar-80 photo' height='80' width='80' />
El resultado de uno y otro método no tiene nada que ver, por supuesto, pero como siempre tú eliges.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Muchas gracias Fernando por tu articulo, me ha parecido muy interesante pero me surge una duda, ¿como se si me funciona el método 1? o ¿es mejor usar directamente el método 2?.
Gracias.
Mira en las Pingdom Tools si ya no tienes query strings de gravatar
Hola Fernando, estoy haciendo un formulario de registro para que los usuarios se puedan subir su propio avatar desde el formulario, pero no me sale, podrias hacer un post de como hacer un formulario para que los usuarios puedan subir su propio avatar?
Gracias
Buena idea 🙂
Hola, Fernando se me ocurrio una idea y no se como implementarla con WooCommerse se puede hacer como un mercado todos pueden entrar publicar para vender ?
O sea, que quieres reinventar Amazon 😀
Sí claro, hay plugins para WooCommerce, se les llama de multi vendor
Buenas! Tengo una comunidad creada con buddypress y bbpress, cada usuario sube su propio avatar.
Si bloqueo las query strings de gravatar habría algún conflicto o mis usuarios se quedarían sin sus fotos de perfil?
Muchas gracias!
No que va, esto solo afecta a aquellos que carguen su foto desde gravatar.com. Las que cargan directamente lo hacen desde imágenes alojadas en tu sitio.
Genial entonces! Me encanta hacer limpieza de peticiones jajajaja
Además que es sencillo, hazlo, y si se siguen viendo los avatares no hay más que hablar
Hola, no sé que actualización hizo que mi gravatar aparezca en la web en el medio, debajo del logotipo y encima del titulo de mi sitio. Como lo quito?