Использование кэширования браузера не работает после обновления .htaccess

У меня есть веб-сайт в WordPress, и я обновил файл .htaccess со следующим правилом.

 <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> 

Теперь, когда я проверил эффективность своего сайта с помощью Google . он все еще дает мне ошибку для использования кэширования браузеров

Я использовал этот код

  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; } 

Есть идеи?

Solutions Collecting From Web of "Использование кэширования браузера не работает после обновления .htaccess"

Это должно сделать это

 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; } } 

Это приведет к удалению ?ver= из файла url. Есть условная проверка, чтобы увидеть, находимся ли мы на странице администратора или если мы вошли в систему. В этом случае мы не применяем фильтры (может быть, полезная информация при работе на вашем сайте).

Также обратите внимание, что это не приведет к удалению ВСЕ строк запроса, поскольку некоторые плагины / темы могут добавлять свои собственные и использовать другие фильтры или жестко кодировать их в своей базе кода. Но вы можете использовать эту функцию для этих фильтров, если они предоставляются (если нет, вам нужно будет вручную отредактировать эти файлы)

Например, вы можете добавить add_filter( 'genesis-header', '_remove_script_version', 15, 1); в этот список фильтров, если вы используете тему генезиса.

… эти файлы содержат ?ver= строку запроса. Не могли бы вы рассказать мне, как удалить это

Чтобы удалить все строки ?ver= и &ver= query, добавьте в functions.php :

 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; } 

До

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

После

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

Обновить

Похоже, что Better WordPress Minify генерирует строку ?f= query. Я бы рекомендовал заглянуть в Autoptimize в качестве альтернативы, так как эта версия более современна и не генерирует ?f=

Если вы видите изменение параметра ver= при просмотре источника на вашей странице при загрузке страницы, загружаемый файл будет «перебор кеша». «Cache busting» выполняется так, что браузер может определить, используется ли более новая версия файла, который он обычно кэширует.

В WordPress файлы CSS и Javascript, используемые для сайта, должны использовать функцию wp_enqueue_script . Это может быть перезаписано и даже удалено темами и плагинами. Важной частью этой функции в этом контексте является четвертый параметр: $ver . Если этот параметр настроен на динамическое изменение или, чаще всего, путем изменения его значения, поскольку файл был изменен, параметр «перехватит» кеш, заставив браузер получить файл этого имени заново.

Примером этого может быть обновление темы. Если я изменяю функцию в файле JavaScript темы, я также меняю ее на $ver в функции wp_enqueue_script , потому что я не хочу, чтобы кто-то обновлял тему и не видел изменений только потому, что у браузера все еще есть файл в кеше. Мне не нужно менять имя для браузера, чтобы знать, что искать. Браузеру не нужно искать новый файл каждый раз, когда он ему нужен.