Anadi
@Anadi
Если ответ Вам помог мой, решением отметье его!

Как заставить битрикс не кешировать определенные участки кода в шаблоне?

Привет знатоки!
Кто сталкивался с такой дичью как кеширование в битриксе? Суть вопроса в том, что надо исключить из кеширования участок кода (условие определения устройства). Использую эту библиотеку device.js, только она с вероятностью 99% правильно определяет устройства. На мой взгляд! Суть вопроса в том, что через ajax записываю в сессию тип устройства. Далее в шаблоне компонента задаю условие
if ($device == "mobile") {
     $content = "content-mobile";
} else {
     $content = "content-desktop";
}

и так далее по шаблону условия, условия... Все классно работает пока есть возможность сбросить кеш. Как можно запретить кешировать условия или хз как еще можно обойти это? Куда копать надо чтоб избавиться от этого? Поиски на просторах интернета особых успехов не принесли так, что буду рад помощи! Спасибо!
  • Вопрос задан
  • 9381 просмотр
Пригласить эксперта
Ответы на вопрос 2
gromdron
@gromdron
Работаю с Bitrix24
Простите конечно, но дичь в данном случае то, что предлагаете Вы. Ни один фрейморк не поддерживает "не кеширование определенной области внутри кешируемой" (найдете опровержение - с удовольствием побеседуем и рассмотрим как возможно применение данного алгоритма).

Собственно в Битриксе есть 2 механизма для решения Вашего кейса:

1) Убрать кеширование результата (html) и сделать кеширование данных.
На мой взгляд не лучший вариант, так как на рендеринг тоже нужны ресурсы, которые и так дорогие

2) Определить дополнительный ключ кеширования.
В StartResulCache во 2 параметр можно добавить свои ключи, и в данном случае у Вас это будет ключ устройства пользователя (mobile / desktop), после чего будет хранится 2 кеша: для мобильных и для десктопных клиентов.
Ответ написан
@demaxx
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы