Бесплатный экспресс-аудит сайта Безопасность, SEO, AI-поиск и 152-ФЗ — отчёт с баллами за минуту Проверить сайт
Обсудить проект

Композит отдаёт старую страницу: изменения не видны посетителям

Вы правите страницу, у себя видите новое, а посетители — старое. Или наоборот: в закрытом разделе посторонние видят то, что им не положено. И то и другое — композит.

Как он работает

Композит сохраняет готовую страницу целиком и отдаёт её мгновенно, а динамическую часть подгружает следом отдельным запросом. Отсюда все его свойства: скорость, задержка обновления и главная опасность — одна и та же сохранённая страница уходит всем.

Какой слой виноват

Кешей на сайте несколько, и «изменения не видны» означает разное. Проверяйте по порядку:

  1. Кеш браузера. Откройте страницу в режиме инкогнито: если там новое, дело было в вашем браузере.
  2. Композит. Сбросьте композитный кеш и проверьте снова в инкогнито — он отдаётся именно неавторизованным.
  3. Кеш компонентов. Изменился элемент каталога, а в списке старое — чистится он.
  4. Внешний кеш. CDN или кеширующий прокси перед сайтом отдаёт свою копию независимо от настроек.

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

Опасная сторона: права доступа

Это то, о чём узнают поздно. Композит сохраняет страницу и отдаёт её до проверки прав: если раздел закрыт от неавторизованных, а страница успела попасть в композитный кеш, её увидят все, у кого есть адрес.

Поэтому правило простое: разделы с ограниченным доступом из композита исключают. Полагаться на то, что «там же авторизация», нельзя — авторизация проверяется в коде страницы, до которого при отдаче из кеша дело не доходит.

Проверить легко: откройте закрытый адрес в режиме инкогнито. Если содержимое показывается — исключайте раздел из композита немедленно.

Личные данные на общей странице

Та же природа, другое проявление. Всё индивидуальное — имя пользователя в шапке, корзина, персональные цены, скидки — должно выноситься в динамические области, которые подгружаются отдельно для каждого.

Если этого не сделать, посетитель увидит чужую корзину или чужое имя. Проверяется так: откройте сайт в инкогнито, положите товар в корзину, затем откройте в другом браузере тоже в инкогнито. Корзина не пуста — композит настроен неправильно и его нужно выключить до исправления.

Страница обновляется не вовремя

  • Старое держится слишком долго. Срок жизни композитной страницы велик, а контент правят часто. Уменьшите срок или настройте сброс при изменении контента.
  • Кеш сбрасывается постоянно. Обратная беда: что-то меняется в разметке при каждом запросе — идентификатор посетителя, метка времени, случайный блок. Композит считает страницу изменившейся и пересоздаёт её снова и снова, теряя весь смысл.
  • Ломается вёрстка или скрипты. Слайдеры и меню перестают работать, сброс кеша помогает ненадолго. Обычно виноват встроенный в страницу скрипт, который попал в сохранённую копию не целиком.

Композит ест место

Сохранённые страницы занимают диск, и на большом сайте это десятки гигабайт. У композита есть настройка дисковой квоты, но она ограничивает только его собственное хранилище — кеш компонентов растёт отдельно и квотой не управляется.

Если место кончается, смотреть нужно оба каталога сразу. Разбор, чем занят диск, — в отдельной инструкции.

Если ничего не помогает

Проверьте, не кешируется ли страница на уровне веб-сервера и не включено ли кеширование в панели хостинга. И не чистите все слои разом на нагруженном сайте в час пик: он начнёт собирать страницы заново и может лечь под нагрузкой — делайте это в спокойное время.

Частые вопросы

Я вижу новую версию, а посетители старую.

Авторизованному пользователю композит обычно не отдаётся — вы получаете страницу напрямую. Проверять изменения нужно в режиме инкогнито или в другом браузере, где вы не авторизованы.

Закрытый раздел видно посторонним.

Композит отдаёт сохранённую страницу до проверки прав: если она попала в кеш, её увидит любой, у кого есть адрес. Разделы с ограниченным доступом нужно исключать из композита, а не полагаться на авторизацию внутри страницы.

Посетитель увидел в шапке чужое имя.

Значит блок с именем попал в статическую часть страницы. Всё индивидуальное — имя, корзина, персональные цены — выносится в динамические области, которые подгружаются отдельно для каждого посетителя.

Композитный кеш сбрасывается постоянно.

В разметке что-то меняется при каждом запросе: идентификатор посетителя, метка времени, случайный блок. Композит считает страницу изменившейся и пересоздаёт её снова, теряя смысл. Найдите меняющийся фрагмент и вынесите его в динамическую область.

Ломаются слайдер и меню, помогает сброс кеша.

Обычно встроенный в страницу скрипт попал в сохранённую копию не целиком. Проверьте, что скрипты подключаются файлами, а не встроены в разметку, и что динамические блоки размечены правильно.

Можно просто выключить композит?

Можно, и на сайте, где он настроен небрежно, это честнее, чем показывать посетителям чужие данные. Но он заметно ускоряет контентные страницы, поэтому сначала стоит разобраться с настройкой.

Композит занимает много места на диске.

У него есть настройка дисковой квоты, но она ограничивает только его хранилище: кеш компонентов растёт отдельно. Если место кончается, смотрите оба каталога сразу.