Композит не включается на странице - причины по убыванию частоты
Композит включён и работает на сайте, а на конкретной странице его нет. Разбираем причины по убыванию частоты: почти все они про сам код страницы.
С чего начать
Смотрим заголовок ответа страницы:
curl -sI 'https://example.org/catalog/telefony/' | grep -i x-bitrix-compositecurl -sI 'https://example.org/' | grep -i x-bitrix-composite# заголовок есть на одной странице и нет на другой - значит, дело в самой страницеОтсутствие служебного заголовка на одной странице при его наличии на другой сразу отсекает половину версий. Настройки модуля тут совсем ни при чём: с ними обе страницы вели бы себя ровно одинаково.
Ищем запись в сессию и свои заголовки:
grep -rn "session_start\|\$_SESSION\[\|setcookie\|RestartBuffer" \ /home/site/public_html/local/templates/main/# запись в сессию при каждом показе и свои заголовки отключают композитgrep -rn "header(\|LocalRedirect" /home/site/public_html/local/templates/main/# переадресация и свои заголовки ответа мешают ровно так жеСтраница, которая пишет в сессию или отдаёт свои заголовки, в статику не попадает. Платформа не может отдать такую копию всем посетителям одинаково и честно отказывается это делать.
Проверяем маски исключений:
- в настройках модуля композита есть список адресов-исключений- туда обычно попадают личный кабинет, корзина и оформление заказа- маска вида /personal/ закрывает и все страницы внутри разделаАдрес, попавший под маску исключений, композитом не обслуживается вовсе. Список исключений стоит читать целиком: маска, добавленная год назад под одну страницу, часто закрывает целый раздел.
Причины
-
Код страницы пишет в сессию примерно 30% случаев
ПризнакКомпозит есть на соседних страницах и нет на этой.
ПроверкаИщем обращения к сессии в шаблоне и в компонентах страницы.
Что делатьУбираем запись в сессию или переносим её в динамическую область.
-
Страница отдаёт свои заголовки примерно 25% случаев
ПризнакНа странице есть свой код с переадресацией или своим ответом.
ПроверкаСмотрим код страницы на установку своих заголовков и на любой сброс буфера.
Что делатьОставляем такие страницы вне композита: они по устройству динамические.
-
Адрес попал в исключения примерно 20% случаев
ПризнакКомпозита нет на всём разделе, а не на одной странице.
ПроверкаЧитаем список масок исключений в настройках модуля композита целиком и очень внимательно.
Что делатьПравим маску так, чтобы она закрывала только то, что нужно.
-
Ответ страницы не двести примерно 15% случаев
ПризнакСтраница показывает содержимое, но отвечает кодом ошибки.
ПроверкаСмотрим код ответа самого сервера отдельно от содержимого этой самой страницы сайта.
Что делатьПриводим ответ к обычному коду: композит кэширует только успешные ответы.
-
Композит выключен для этой группы примерно 10% случаев
ПризнакУ гостя композит работает, у авторизованного - нет.
ПроверкаПроверяем настройки композита отдельно для каждой группы пользователей этого сайта.
Что делатьВключаем нужные группы или оставляем как есть, если так и задумано.
Частые вопросы
Почему композит есть у гостя и нет у меня?
Под администратором он часто отключён намеренно. Проверять работу композита нужно из отдельного окна браузера.
Мешает ли композиту личный блок в шапке?
Нет, если он объявлен динамической областью. Мешает именно запись в сессию и свои заголовки.
Можно ли включить композит на странице корзины?
Технически иногда да, практически не нужно: она почти целиком личная. Выигрыша там нет.
Как проверить, что копия действительно отдаётся?
По служебному заголовку ответа на втором обращении. Первое обращение только собирает копию.
Смежное
- Композит на практике - оглавление подтемы
- Композитный сайт: включение, динамические области, сброс - как это работает, когда работает
- Композитный сайт - устройство технологии
- Правка не видна на сайте: какой кэш сбросить - соседняя картина с кэшем
- Производительность - устройство темы целиком
- Композит изнутри: статическая копия, зоны, пересборка - кто и почему голосует против копии