Uno de los errores más difíciles de quitar de los analizadores de velocidad de tu sitio es el conocido como «Remove Query Strings from Static Resources«.
El resto de los errores de optimización ya los hemos visto casi todos pero este suele ser el más recalcitrante y complicado de solucionar. Pero vayamos al principio…
Índice de contenidos
¿Qué son las query strings?
Cuando comprobamos nuestra web en herramientas como Gtmetrix, Pingdom o Google PageSpeed Insights suele aparecer casi siempre una sugerencia para quitar las «query strings from static resources», que en español vendría a ser algo como «cadenas de búsqueda de recursos estáticos».
Las query strings son en realidad URLs que, cuando las examinas, contienen caracteres especiales, como «&», «?» u otros. Y son las hojas de estilos y los scripts quieres en ocasiones añaden a su URL unas terminaciones en modo de cadenas de búsqueda (query strings) para identificar la versión del recurso o para saltarse la caché del navegador si la has forzado.
Un ejemplo típico de query string sería algo así:
/wp-includes/css/dashicons.min.css?ver=4.4.2
Y borrar las query strings de los recursos estáticos es importante ya que pueden provocar problemas con la caché.
Hay servidores de proxy cache e incluso algunas CDN que no pueden cachear recursos estáticos con query strings, con lo que perdemos oportunidades de mejorar la velocidad de nuestra web.
Cómo quitar las query strings from static resources
Hay varios métodos posibles con los que podemos quitar estas cadenas de búsqueda, estas query strings de los recursos estáticos. Aquí tienes los más interesantes.
Quitar las query strings from static resources en WordPress con una función
Abre el archivo functions.php de tu tema activo o tu plugin de utilidades para incluir una función que quite las query strings de todos los scripts y hojas de estilos asociadas a tu dominio.
El siguiente fragmento de código serviría perfectamente:
//Quitar las query strings from statics resources function _remove_script_version( $src ){ $parts = explode( '?ver', $src ); return $parts[0]; } add_filter( 'script_loader_src', '_remove_script_version', 15, 1 ); add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
Quitar las query strings from static resources en WordPress con el plugin W3 Total Cache
Si utilizas el plugin W3 Total Cache puedes quitar la marca de la casilla que evita la creación de query strings.
Esta opción la encontrarás en la sección de ajustes de Performance > Browser Cache. Ahí encontrarás el ajuste llamado “
Quitar las query strings from static resources en WordPress con otros plugins
Si no usas el plugin W3 Total Cache y no te animas a tocar código puedes usar plugins creados específicamente para esta tarea concreta de la que estamos hablando hoy.
Conozco un par de ellos…
El nombre del primero no deja lugar a dudas, solo tienes que instalar y activar el plugin Remove Query Strings From Static Resources.
Es un plugin ligero y sencillo, que añade la función del primer método al modo más sencillo, sin modificar por tu cuenta ningún archivo.
Lo activas y quita las query strings..
El otro se llama Remove Query Strings (vaya sorpresa) y es en principio un poco más limitado que el anterior, pues por defecto solo permite quitar query strings que comiencen con la cadena «ver».
Pero si quieres puedes forzar a que elimine otras query strings añadiendo una constante a tu archivo wp-config.php, así:
define('REMOVE_QUERY_STRING_ARGS', 'ver,version,my-arg');
En el ejemplo anterior quita todas las cadenas que comiencen con “ver”, “version” y “loquesea”. Por supuesto, adáptalo a tus necesidades.
Quitar las query strings from static resources en WordPress mediante versiones
Para configurar el control de versiones en recursos sin usar query strings también puedes definir la versión en la ruta del archivo. Por ejemplo:
Haciéndolo así el número de versión lo define el nombre de la carpeta, que hace referencia a la versión específica del archivo. De este modo no se usan query strings y se sigue especificando el número de versión, todos contentos.
Con estos métodos serás capaz de quitar la inmensa mayoría de query strings de los recursos estáticos, optimizando la velocidad de tu sitio y el uso de la caché.
¿Conoces algún modo más?
Ya tardas en compartirlo. Estamos hambrientos de conocimiento.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Muchas gracias Fernando. Veo que es el truco 193 de tu libro. No lo tenía marcado como favorito ;). En esta versión del truco veo una ligera diferencia. En el libro viene «?» y aquí lo has puesto como «?ver». ¿Dependerá de lo que nos detecte Google Speed usar una otra cadena? Un saludo y muchas gracias.
La cadena dependerá de lo que quieras quitar claro 🙂
En mi opinión este truco hay que usarlo con cuidado. Las query strings muchas veces son necesarias precisamente para saltarse la cache del navegador. Una hoja de estilos de un plugin o theme, al actualizarse, si mantiene igual la url del recurso que sea, esta podría no actualizarse en el navegador y dar errores.
Todos los trucos hay que hacerlos con cuidado, y sobre todo midiendo los resultados en el analizador y, más importante, en tu web.
🙂
Gracias por el post. Tengo muchos gravatars con «?s=» y lamentablemente ni con el plugin W3TC, ni con el código me funciona (ni cambiando la cadena «?ver»).
Ya tenía desmarcada la opción «Prevent caching…» y justo debajo aparece otra «Remove query strings from static resources» la cual he probado marcando y desmarcando.
Pero Pingdom me sigue dando el mismo error. Tan solo consigo mediante el código pasar de la puntuación F 10 a F 11.
No conocía ese plugin… Es realmente bueno? Conozco uno llamado Gonzales (por Speedy Gonzales)
Gracias por el aporte, pero mi problema es diferente. En mi caso solo aparece el mismo error pero relacionado con imágenes un ejemplo es el siguiente «endless-runner-2.jpg?resize=300%2C193&ssl=1» como puedo solucionarlo? de antemano gracias.
A mi me pasa exactamente lo mismo: tengo 43 query strings con la cadena ?resize…&ssl=1 y ya he intentado de todo por eliminarlas, hice el código personalizado en functions.php cambiando el ? por ?resize, probé con plugins, hice reglas de cloudflare, desactivé la opcion de W3TC y aún así Pingdom me las sigue detectanto… ya no se qué más hacer…???!!!
Yo también he intentado todo eso y no puedo solucionarlo, de hecho cuando agregue el código al en el functions.php se me tiro la pagina y tuve que agregarlo desde el administrador de CPanel borrando ese código, al parecer no hay solución para nosotros :v
Tambien se puede con el free plugin de Littlebizzy
https://wordpress.org/plugins/remove-query-strings-littlebizzy/
No hay queries de database y es my rapido, por favor tratarlo amigo…
Resulta que tengo un problema, cada imagen, cada archivo que esta en SRc tiene el siguiente string ?x54532 , no he podido quitarlo, si me puedes ayudar como se puede solucionar
gracas
Para los que no les funciona nada de lo expuesto, pueden intentar previamente purgar el caché si tienen algún plugin de caché, en mi caso tengo LiteSpeed server y funcionó solo después de purgar el caché en el dashboard de WP.
Hola Fernando, Fantástico tutorial enhorabuena. Me gustaría hacerte una pregunta que seguro otros compañeros puedan tener y te valga para añadir algo de contenido. Yo he usado la funcion que indicas arriba (1er método) sin embargo, yo ademas de ?ver tambien tengo muchos recursos con ?v y no soy capaz de crear la función para que se eliminen tambie ese ?v. ¿Podrias por favor indicarme como sería la funcion en ese caso? ;Gracias!!
¿Has probado cambiando esto?
$parts = explode( ‘?v’, $src );
gracias popr compartir …ya voy hacer las pruebas