Как отключить кеширование отдельного участка кода на странице WP Rocket?
Есть 9 секций на странице. В 1 секцию приходят уникальные данные с back-end для каждого пользователя.
Можно как-то отключить кеширование именно этой секции?
Или кеширование работает по принципу тумблера — либо кеширует страницу, либо нет.
Дополнительно:
Ответы:
https://stackoverflow.com/questions/56389269/how-t...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
WP Rocket кэширует HTML страницы целиком. Отключить кэширование «только одной PHP-секции» внутри уже закэшированной страницы штатно нельзя: когда страница отдана из кэша, PHP-код этой секции уже не выполняется. Поэтому логика «страница кэшируется, а один блок каждый раз генерируется сервером» для WP Rocket напрямую не работает.
Есть три рабочих варианта:
Для WordPress чаще всего выбирают AJAX. В HTML оставляете контейнер:
<div id="user-dynamic-block" data-nonce="...">Загрузка...</div>
На фронте запрашиваете данные:
fetch('/wp-admin/admin-ajax.php?action=user_dynamic_block') .then(function (response) { return response.text(); }) .then(function (html) { document.getElementById('user-dynamic-block').innerHTML = html; });fetch('/wp-admin/admin-ajax.php?action=user_dynamic_block') .then(function (response) { return response.text(); }) .then(function (html) { document.getElementById('user-dynamic-block').innerHTML = html; });
На сервере:
add_action('wp_ajax_user_dynamic_block', function () { if (!is_user_logged_in()) { wp_die(''); } echo wp_kses_post(render_user_dynamic_block(get_current_user_id())); wp_die(); });
Если данные зависят от авторизованного пользователя, убедитесь, что WP Rocket не кэширует страницы для logged-in users, либо что сам блок действительно приходит отдельным AJAX-запросом. Для корзин, личных кабинетов, цен для клиента и похожих персональных блоков часто безопаснее исключить страницу из кэша полностью.
И главное: не выводите персональные данные в закэшированный HTML. Иначе один пользователь может увидеть данные другого, если кэш будет создан в неподходящий момент.