Rimuovi ?ver= da wp_register_script

17 mag 2012, 19:10:45
Visualizzazioni: 6.76K
Voti: 8

Ricevo avvisi nei test di velocità di Google riguardanti le stringhe di query nei miei script. Sto provando a rimuoverle passando false come argomento per quel parametro. Tuttavia, sembra non avere effetto:

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

PS: la parte "myversionnumber" nel nome del file js è il mio metodo per controllare cache/versioning invece dell'approccio ?ver= che apparentemente crea problemi ad alcuni server proxy (secondo il test Google pagespeed):

Rimuovi le stringhe di query dalle risorse statiche Abilitare la cache pubblica negli header HTTP per le risorse statiche permette al browser di scaricare le risorse da un server proxy vicino invece che da un server origin remoto. Scopri di più

Suggerimenti per questa pagina

Le risorse con un "?" nell'URL non vengono memorizzate nella cache da alcuni server proxy. Rimuovi la stringa di query e codifica i parametri nell'URL per le seguenti risorse:

4
Commenti

Domanda interessante, non sapevo che le query string potessero influire sulla velocità della pagina. Anche se non ho una soluzione, lasciami commentare sull'impostazione del parametro su "false": Per quanto ne so, puoi inserire un numero di versione oppure viene utilizzata la versione corrente di WordPress come default.

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

Pensavo che lo script venisse memorizzato nella cache, anche con un numero di versione - e che modificare il numero di versione avrebbe "interrotto" la cache, intenzionalmente, in modo da caricare il nuovo script anziché quello vecchio...

Stephen Harris Stephen Harris
17 mag 2012 21:37:17

@Stephen, esattamente questa è l'idea. Tuttavia, a quanto pare alcuni server proxy di cache non memorizzano nella cache gli URL delle risorse con parametri nella query string. Ecco perché sto optando per codificare i parametri nel nome del file invece. Stesso effetto, meno bagaglio.

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

Ciao Scott B. Mi trovo di fronte allo stesso problema. Dopo aver eseguito un test su gtmetrix ricevo errori per la query. La soluzione fornita da @SickHippie ha funzionato per te? È sicuro utilizzarla?

kat_indo kat_indo
3 nov 2013 22:16:02
Tutte le risposte alla domanda 3
0
11

Penso che tu debba passare NULL come quarto parametro.

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

Puoi passare null come valore della versione a wp_register_script o wp_enqueue_script e questo dovrebbe rimuovere la query string.

<?php
wp_enqueue_script(
   'myscript',
   '/percorso/verso/script.js',
   array(),
   null
);
17 mag 2012 19:31:55
0

Premessa

Ho risolto questo problema in modo molto diverso da SickHippie e chrisguitarguy e immagino non sia il modo in cui dovrebbe essere risolto, ma funziona davvero bene per me.

Il codice...

Ho inserito questo frammento di codice alla fine del file functions.php del mio tema:

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, '?rev=' ) ) // copia/incolla questa riga e la successiva per rimuovere ciò che vuoi dalla fine dei tuoi file 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 );

Da dove è nata l'idea...

Stavo cercando su Google e ho trovato questo articolo, ma continuavo ad avere un problema con i css/js: a questo punto il mio codice aveva ancora (qua e là) alla fine qualcosa tipo .../some-stylesheet.css?rev=... e ho pensato di estendere un po' il frammento di codice per includere qualsiasi cosa potesse esserci dopo .css.

19 set 2014 02:51:42