Remove ?ver= from wp_register_script

17 may 2012, 19:10:45
Vistas: 6.76K
Votos: 8

Estoy recibiendo advertencias en la prueba de velocidad de Google sobre las cadenas de consulta en mis scripts. Por lo tanto, estoy intentando eliminarlas pasando false como argumento para ese parámetro. Sin embargo, parece no tener efecto:

wp_register_script('myscript', get_bloginfo('template_directory').'/scripts.myversionnumber.js',false,false,true);
wp_enqueue_script('myscript');

PD: la parte "myversionnumber" del nombre del archivo js es mi método para controlar el caché/versionado en lugar del enfoque ?ver= que aparentemente causa problemas en algunos servidores proxy (según la prueba de velocidad de Google Pagespeed):

Eliminar cadenas de consulta de recursos estáticos Habilitar el almacenamiento en caché público en los encabezados HTTP para recursos estáticos permite que el navegador descargue recursos desde un servidor proxy cercano en lugar de desde un servidor de origen remoto. Más información

Sugerencias para esta página

Los recursos con un "?" en la URL no se almacenan en caché por algunos servidores proxy. Elimina la cadena de consulta y codifica los parámetros en la URL para los siguientes recursos:

4
Comentarios

Pregunta interesante, nunca supe que las cadenas de consulta afectarían la velocidad de la página. Si bien no tengo una solución, déjame comentar sobre configurar el parámetro en "false": Hasta donde sé, ingresas un número de versión o por defecto toma la versión actual de WordPress.

Johannes Pille Johannes Pille
17 may 2012 19:15:16

Pensé que el script se almacenaría en caché, incluso con un número de versión, y que cambiar el número de versión "rompería" la caché, intencionalmente para que se cargara el nuevo script en lugar del antiguo...

Stephen Harris Stephen Harris
17 may 2012 21:37:17

@Stephen, esa es exactamente la idea. Sin embargo, al parecer algunos servidores de caché proxy no almacenan en caché las URLs de recursos con parámetros de cadena de consulta. Por eso estoy optando por codificar los parámetros en el nombre del archivo. Mismo efecto, menos carga.

Scott B Scott B
18 may 2012 16:15:43

Hola Scott B. Me enfrento al mismo problema. Después de ejecutar una prueba en gtmetrix, obtengo errores en la consulta. ¿La solución proporcionada por @SickHippie funcionó para ti? ¿Es seguro usarla?

kat_indo kat_indo
3 nov 2013 22:16:02
Todas las respuestas a la pregunta 3
0
11

Creo que debes pasar NULL como cuarto parámetro.

wp_register_script(
    'myscript',
    get_bloginfo('template_directory').'/scripts.myversionnumber.js',
    false,
    NULL,
    true);
wp_enqueue_script('myscript');
17 may 2012 19:29:43
0

Puedes pasar null como valor de versión a wp_register_script o wp_enqueue_script y esto debería eliminar la cadena de consulta.

<?php
wp_enqueue_script(
   'myscript',
   '/ruta/al/script.js',
   array(),
   null
);
17 may 2012 19:31:55
0

Prólogo

Resolví esto de manera muy diferente a SickHippie y chrisguitarguy y supongo que no es la forma en que se supone que debe resolverse, pero funciona muy bien para mí.

El código...

Coloqué este fragmento de código al final del archivo functions.php de mi tema:

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, '?rev=' ) ) // copia/pega esta línea y la siguiente para eliminar lo que quieras del final de tu css/js
    $src = remove_query_arg( 'rev', $src );
  if( strpos( $src, 'ver=' ) )
    $src = remove_query_arg( 'ver', $src );
  return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_querystring', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_querystring', 10, 2 );

De dónde vino la idea...

Estaba buscándolo en Google y encontré este artículo, pero seguía teniendo un problema con css/js: en este punto mi código todavía tenía (aquí y allá) al final algo como .../some-stylesheet.css?rev=... y pensé en extender un poco el fragmento de código para incluir cualquier cosa que pudiera haber después de .css.

19 sept 2014 02:51:42