Удалить? Ver = из wp_register_script


8

Я получаю наглость на тесте скорости Google в отношении строк запросов в моих скриптах. Итак, я пытаюсь удалить их, передав false в качестве аргумента для этого параметра. Однако, это, кажется, не имеет эффекта:

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

PS: часть "myversionnumber" в имени файла js - это мое средство управления кэшированием / контролем версий, а не подход? Ver =, который, по-видимому, отключает некоторые прокси-серверы (согласно тесту скорости страниц Google):

Удаление строк запроса из статических ресурсов. Включение публичного кэширования в заголовках HTTP для статических ресурсов позволяет браузеру загружать ресурсы с ближайшего прокси-сервера, а не с удаленного исходного сервера. Учить больше

Предложения для этой страницы

Ресурсы с "?" в URL не кешируются некоторые прокси кеширующие серверы. Удалите строку запроса и закодируйте параметры в URL для следующих ресурсов:


Интересный вопрос, никогда не знал, что строки запроса увеличат скорость страницы. Хотя у меня нет решения, позвольте мне прокомментировать установку параметра на «false»: Afaik, вы либо вводите номер версии, либо по умолчанию используется текущая версия WordPress.
Йоханнес Пилле

Я думал, что сценарий будет кэшироваться, даже с номером версии - и что изменение номера версии намеренно «сломает» кэш, так что будет загружен новый, а не старый сценарий…
Стивен Харрис

@ Стефен, это и есть идея. Однако, по-видимому, некоторые прокси-серверы кэширования не будут кэшировать URL ресурсов с параметрами строки запроса. Вот почему я предпочитаю вместо этого кодировать параметры в имени файла. Тот же эффект, меньше багажа.
Скотт Б

Здравствуйте, Скотт Б. Я столкнулся с той же проблемой. После запуска теста на gtmetrix я получаю ошибки для запроса. Работало ли решение, предоставленное @SickHippie, для вас? Насколько это безопасно?
kat_indo

Ответы:


9

Я думаю, что вы должны передать NULL в качестве 4-го параметра.

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

3

Вы можете передать nullв качестве значения версии wp_register_scriptили, wp_enqueue_scriptи он должен удалить строку запроса.

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

3

предисловие

Я решил это совсем не так, как SickHippie и chrisguitarguy, и думаю, что это не тот путь, который должен быть решен, но он работает очень хорошо для меня.

Код...

Я поместил этот фрагмент кода в конец functions.phpфайла моей темы :

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

Откуда пришла идея ...

Я искал это в Google и нашел эту статью , но у меня все еще была проблема с css / js: в этот момент мой код все еще имел (здесь и там) в конце что-то вроде, .../some-stylesheet.css?rev=...и я подумал о расширении фрагмента кода немного, чтобы включить все, что могло бы быть после .css.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.