Как отключить кешщирование стилей по дефолту?

Ссылка скопирована
1 ответ

В последнее время какая то шняга с wordpress
стили обновляются только при перезагрузке в браузере с ctrl + F5
а просто при перезагрузке страницы не меняются
какой то кеширование
уже не первый сайт разворачиваю на локальном сервере, и наблюдаю такое
хотя плагинами не забит, cms разворачиваю самые свежие
несколько как обычно стоит cf7, polylang, svg support, acf

на других системах (modx,dle) такого не наблюдается

Дополнительно:

если это проблема беспокоит только на локалке и мешает при разработке, то просто в конце подключения файлов указываешь им версию, и в php рандомное число при каждой перезагрузке

  • В качестве версии можно указывать дату последнего изменения файла
    filemtime( get_theme_file_path( '/css/main.css' ) )

    filemtime( get_theme_file_path( '/css/main.css' ) )

  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Павел Админов Ответ

    Это не «кэширование WordPress по дефолту» в плохом смысле, а обычное браузерное кэширование CSS. Если файл подключён с одной и той же версией, браузер считает, что его можно брать из кэша. Ctrl+F5 принудительно скачивает заново, поэтому изменения появляются.

    Правильное решение для разработки — подключать стили через wp_enqueue_style() и передавать версию от filemtime(). Тогда при изменении файла URL меняется, и браузер загрузит свежий CSS.

    add_action('wp_enqueue_scripts', function () {
        $path = get_stylesheet_directory() . '/assets/css/main.css';
        $url = get_stylesheet_directory_uri() . '/assets/css/main.css';
     
        wp_enqueue_style(
            'theme-main',
            $url,
            [],
            file_exists($path) ? filemtime($path) : null
        );
    });

    add_action('wp_enqueue_scripts', function () { $path = get_stylesheet_directory() . '/assets/css/main.css'; $url = get_stylesheet_directory_uri() . '/assets/css/main.css'; wp_enqueue_style( 'theme-main', $url, [], file_exists($path) ? filemtime($path) : null ); });

    Если подключаете главный style.css дочерней темы:

    add_action('wp_enqueue_scripts', function () {
        wp_enqueue_style(
            'child-style',
            get_stylesheet_uri(),
            [],
            filemtime(get_stylesheet_directory() . '/style.css')
        );
    });

    add_action('wp_enqueue_scripts', function () { wp_enqueue_style( 'child-style', get_stylesheet_uri(), [], filemtime(get_stylesheet_directory() . '/style.css') ); });

    На проде можно использовать версию темы вместо filemtime(), но на локальной разработке filemtime() удобнее. Не нужно отключать кэш браузера для всех пользователей через агрессивные headers: это ухудшит скорость сайта.

    Также проверьте:

    • не включён ли кэш-плагин, например LiteSpeed Cache, WP Rocket, Autoptimize;
    • не отдаёт ли локальный сервер старую копию через nginx/apache cache;
    • не подключаете ли вы CSS напрямую в header.php без версии;
    • не редактируете ли не тот файл темы, который реально подключён.

    Для разработки можно открыть DevTools → Network → Disable cache, но это только локальная помощь. В коде всё равно лучше версионировать CSS.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно