web-dev-qa-db-fra.com

Tirer parti de la mise en cache du navigateur après la mise à jour de .htaccess

J'ai un site Web dans WordPress et j'ai mis à jour mon fichier .htaccess avec la règle suivante.

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
</IfModule>

Maintenant, lorsque j'ai vérifié les performances de mon site Web avec Google insight . il me donne toujours une erreur pour exploite la mise en cache du navigateur

J'ai utilisé ce code

    add_filter( 'script_loader_src', 'elated_child__remove_ver' );
    add_filter( 'style_loader_src', 'elated_child__remove_ver' );

    function elated_child__remove_ver( $src ) { // Remove query strings from static resources
        if ( strpos( $src, '?f=' ) || strpos( $src, '&f=' ) ) {
            $src = remove_query_arg( 'f', $src );
        }



   return $src;
}

Une idée?

2
Ankita Kashyap

... ces fichiers contenant la chaîne de requête ?ver=. Pouvez-vous s'il vous plaît me dire quel est le moyen de supprimer cette

Pour supprimer toutes les chaînes de requête ?ver= et &ver=, placez ce qui suit dans le functions.php de votre thème enfant:

add_filter( 'script_loader_src', 'wpse_237671_remove_ver' );
add_filter( 'style_loader_src', 'wpse_237671_remove_ver' );

function wpse_237671_remove_ver( $src ) { // Remove query strings from static resources
    if ( strpos( $src, '?ver=' ) || strpos( $src, '&ver=' ) ) {
        $src = remove_query_arg( 'ver', $src );
    }
    return $src;
}

Avant

<link rel='stylesheet' href='http://some.site/to/file.css?ver=4.6' type='text/css' />

Après

<link rel='stylesheet' href='http://some.site/to/file.css' type='text/css' />

Mettre à jour

Il semble que le Better WordPress Minify génère la chaîne de requête ?f=. Je recommanderais de regarder dans Autoptimize comme alternative car celle-ci est plus à jour et ne génère pas ?f=

1

Cela devrait le faire

if ( !is_admin() || !is_admin_bar_showing() ){
  add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
  add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
}

function _remove_script_version( $src ){
  if (preg_match("(\?ver=)", $src )){
    $parts = explode( '?', $src );
    return $parts[0];
  }else{
    return $src;
  }
}

Cela supprimera le ?ver= de l'URL du fichier. Il existe une vérification conditionnelle pour savoir si nous sommes sur une page d'administrateur ou si nous sommes connectés. Dans ce cas, nous n'appliquons pas les filtres (ces informations peuvent être utiles lorsque vous travaillez sur votre site).

Notez également que cela ne supprimera pas les chaînes de requêteALLpuisque certains plugins/thèmes pourraient ajouter leurs propres et utiliseraient d’autres filtres ou les coderaient en dur dans leur code base. Mais vous pouvez associer la même fonction à ces filtres s'ils sont fournis (sinon, vous devrez éditer ces fichiers manuellement).

Par exemple, vous pouvez ajouter add_filter( 'genesis-header', '_remove_script_version', 15, 1); à cette liste de filtres si vous utilisiez un thème de genèse.

1
bynicolas

Si le paramètre ver= change lors de l'affichage de la source sur votre page à chaque chargement de la page, le fichier en cours de chargement est "contournement du cache". La "suppression du cache" est effectuée afin qu'un navigateur puisse déterminer si une version plus récente d'un fichier qu'il utiliserait normalement en mémoire cache est utilisée.

Dans WordPress, les fichiers CSS et Javascript utilisés pour le site devraient utiliser la fonction wp_enqueue_script . Cela peut être écrasé et même supprimé par des thèmes et des plugins. La partie importante à noter à propos de cette fonction dans ce contexte est le quatrième paramètre: $ver. Si ce paramètre est configuré pour changer de manière dynamique, ou plus généralement en modifiant sa valeur parce que le fichier a été modifié, le paramètre "efface" le cache, ce qui permet au navigateur de récupérer le fichier portant ce nom.

Un exemple de ceci serait une mise à jour d'un thème. Si je modifie une fonction dans le fichier JavaScript du thème, je modifie également le $ver dans la fonction wp_enqueue_script, car je ne veux pas que quelqu'un mette à jour le thème et ne voie pas les modifications simplement parce que le navigateur a toujours le fichier dans son cache. Je ne devrais pas avoir besoin de changer son nom pour que le navigateur sache quoi trouver. Le navigateur ne devrait pas non plus avoir à rechercher un nouveau fichier à chaque fois qu'il en a besoin.

1
Nathan Powell