Elimină ?ver= din wp_register_script

17 mai 2012, 19:10:45
Vizualizări: 6.76K
Voturi: 8

Am primit avertismente în testul de viteză Google privind parametrii din query string în scripturile mele. Încerc să îi elimin prin transmiterea valorii false pentru acel parametru. Totuși, nu pare să aibă efect:

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

PS: partea "myversionnumber" din numele fișierului js este metoda mea de a controla cache-ul/versiunea în loc de abordarea cu ?ver= care aparent cauzează probleme unor servere proxy (conform testului Google pagespeed):

Elimină query string-urile din resursele statice Activarea cache-ului public în antetele HTTP pentru resursele statice permite browserului să descarce resursele de la un server proxy apropiat în loc de la un server origin îndepărtat. Află mai multe

Sugestii pentru această pagină

Resursele cu un "?" în URL nu sunt cache-uite de unele servere proxy. Elimină query string-ul și codează parametrii în URL pentru următoarele resurse:

4
Comentarii

Întrebare interesantă, nu știam că șirurile de interogare ar putea afecta viteza paginii. Deși nu am o soluție, permiteți-mi să comentez setarea parametrului la "false": Din câte știu, fie introduceți un număr de versiune, fie acesta va folosi implicit versiunea curentă WordPress.

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

Credeam că scriptul va fi stocat în cache, chiar și cu un număr de versiune - și că modificarea numărului de versiune ar "strica" cache-ul, intenționat, astfel încât să se încarce noul script, în locul celui vechi...

Stephen Harris Stephen Harris
17 mai 2012 21:37:17

@Stephen, exact aceasta este ideea. Cu toate acestea, se pare că unele servere proxy de cache nu vor stoca în cache URL-urile resurselor cu parametri în șirul de interogare. De aceea aleg să codific parametrii în numele fișierului. Același efect, dar cu mai puțină povară.

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

Salut Scott B. Mă confrunt cu aceeași problemă. După ce am rulat un test pe gtmetrix primesc erori pentru interogare. Soluția oferită de @SickHippie a funcționat pentru tine? Este sigur să o folosești?

kat_indo kat_indo
3 nov. 2013 22:16:02
Toate răspunsurile la întrebare 3
0
11

Cred că trebuie să treci NULL ca al 4-lea parametru.

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

Poți pasa null ca valoare pentru versiune la wp_register_script sau wp_enqueue_script și ar trebui să elimine query string-ul.

<?php
wp_enqueue_script(
   'myscript',
   '/calea/catre/script.js',
   array(),
   null
);
17 mai 2012 19:31:55
0

Cuvânt înainte

Am rezolvat această problemă într-un mod mult diferit față de SickHippie și chrisguitarguy și cred că nu este modul în care ar fi trebuit rezolvată, dar funcționează foarte bine pentru mine.

Codul...

Am introdus acest fragment de cod la sfârșitul fișierului functions.php din tema mea:

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, '?rev=' ) ) // copiați/lipește această linie și următoarea pentru a elimina ceea ce doriți de la sfârșitul fișierelor 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 unde a venit ideea...

Căutam pe Google și am găsit acest articol, dar aveam în continuare o problemă cu fișierele css/js: în acest moment, codul meu mai avea (aici și acolo) la sfârșit ceva de genul .../some-stylesheet.css?rev=... și m-am gândit să extind puțin fragmentul de cod pentru a include orice ar fi putut fi după .css.

19 sept. 2014 02:51:42