Supprimer? Ver = de wp_register_script


8

J'obtiens des bourdonnements sur le test de vitesse de Google concernant les querystrings dans mes scripts. Donc, j'essaie de les supprimer en passant false comme argument pour ce paramètre. Cependant, cela ne semble pas avoir d'effet:

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

PS: la partie "myversionnumber" du nom de fichier js est mon moyen de contrôler le cache / versioning plutôt que l'approche? Ver = qui déclenche apparemment certains serveurs proxy (selon le test de Google Pagespeed):

Supprimer les chaînes de requête des ressources statiques L' activation de la mise en cache publique dans les en-têtes HTTP pour les ressources statiques permet au navigateur de télécharger des ressources à partir d'un serveur proxy à proximité plutôt qu'à partir d'un serveur d'origine distant. Apprendre encore plus

Suggestions pour cette page

Ressources avec un "?" dans l'URL ne sont pas mis en cache par certains serveurs de mise en cache proxy. Supprimez la chaîne de requête et codez les paramètres dans l'URL des ressources suivantes:


Question intéressante, je n'ai jamais su que les chaînes de requête augmenteraient la vitesse de la page. Bien que je n'aie pas de solution, laissez-moi commenter la définition du paramètre sur "false": Afaik, vous entrez soit un numéro de version, soit par défaut la version wordpress actuelle.
Johannes Pille

Je pensais que le script serait mis en cache, même avec un numéro de version - et que la modification du numéro de version `` casserait '' le cache, afin que le nouveau script, plutôt que l'ancien, soit chargé ...
Stephen Harris

@Stephen, c'est exactement l'idée. Cependant, apparemment, certains serveurs de cache proxy ne mettront pas en cache les URL de ressources avec des paramètres de chaîne de requête. C'est pourquoi j'opte plutôt pour l'encodage des paramètres dans le nom de fichier. Même effet, moins de bagages.
Scott B

Bonjour Scott B. Je suis confronté au même problème. Après avoir exécuté un test sur gtmetrix, je reçois des erreurs pour la requête. La solution fournie par @SickHippie a-t-elle fonctionné pour vous? Est-il sûr de l'utiliser?
kat_indo

Réponses:


9

Je pense que vous devez passer NULL comme 4ème paramètre.

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

3

Vous pouvez passer nullcomme valeur de version à wp_register_scriptou wp_enqueue_scriptet il doit supprimer la chaîne de requête.

<?php
wp_enqueue_script(
   'myscript',
   '/path/to/script.js',
   array(),
   null
);

3

Préface

J'ai résolu cela très différemment de SickHippie et chrisguitarguy et je suppose que ce n'est pas comme ça que ça devrait être résolu, mais ça marche vraiment bien pour moi.

Le code...

J'ai mis cet extrait de code à la fin du functions.phpfichier de mon thème :

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, '?rev=' ) ) // copy/paste this line and the next one to take away what you want from the end of your 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 );

D'où est venue l'idée ...

Je le cherchais sur Google et j'ai trouvé cet article , mais j'ai continué à avoir un problème avec css / js: à ce stade, mon code avait encore (ici et là) quelque chose comme .../some-stylesheet.css?rev=...et j'ai pensé à étendre l'extrait de code a peu pour inclure tout ce qui aurait pu être après .css.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.