AlexBelkevich
@AlexBelkevich
Нет нерешаемых задач. Есть деревянные клиенты

Как отключить кеширование файлов Wordpress?

Здравствуйте. Подскажите, пожалуйста, с одной проблемой. Есть сайт на Wordpress. На сайте администратор через ftp заменяет файлы. В итоге новые файлы можно увидеть только, если сбросить кеш через ctrl+f5. Иногда приходится кеш браузера очищать. Плагины для кеширования не стоят. Есть только wp-security, но его отключения ситуацию не меняет
  • Вопрос задан
  • 5034 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
WordPress ваши файлы не кеширует, их кеширует ваш браузер. Для сброса кеша используются параметры-версии, как написал Денис. Это называется "cache busting". Если речь идет о файлах-аттачментах (а не скриптах/стилях), можно добавлять так:
function attachment_cache_busting( $url ) {
    return add_query_arg( 'v', time(), $url );
}
add_filter( 'wp_get_attachment_url', 'attachment_cache_busting' );

Данный код заменит URL вида example.com/wp-content/uploads/2017/06/file.pdf на example.com/wp-content/uploads/2017/06/file.pdf?v=1433422229. Впрочем, он заменит его для всех URL всех статических файлов, что нам не сильно подходит. Давайте ограничим только для PDF:
function attachment_cache_busting( $url ) {

    if ( substr( $url, -3 ) === 'pdf' ) {
        $url = add_query_arg( 'v', time(), $url );
    }

    return $url;
}
add_filter( 'wp_get_attachment_url', 'attachment_cache_busting' );

Можно пойти дальше, если данную манипуляцию может понадобиться проводить для нескольких форматов файлов, не только PDF:
function attachment_cache_busting( $url ) {

    $allowed_extensions = array( 'pdf', 'doc', 'docx', 'zip' );
    $file_extension = substr( $url, -3 );

    if ( in_array( $file_extension, $allowed_extensions ) ) {
        $url = add_query_arg( 'v', time(), $url );
    }

    return $url;
}
add_filter( 'wp_get_attachment_url', 'attachment_cache_busting' );
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Здравствуйте.

Если речь про js и css-файлы, то может сделать свои функции-обертки и менять версию файла.
https://compnot.ru/wordpress/kak-prinuditelno-obno...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы