Вы здесь

Как обойти кеширование при определении девайса через user agent?

0

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

В template.php описана собственная функция, она берет $_SERVER['HTTP_USER_AGENT'] и проверяет девайс, если это мобильник или планшет, возвращает true

В шаблоне вывода views эта функция стоит как условие, если мобильники - одна структура, если не мобильники другая.

ПРоблема в том, что при включенном кеширование, каким то образом кешируется и $_SERVER['HTTP_USER_AGENT'] , и получается каша, на мобилках показывает станционарную версию, на стационаре мобильную, в зависимости от того с какого девайса сначала зашли.

Как это обойти? или какие есть альтернативы замены структуры в зависимости от девайса? Вариант отключения кеширования не хотелось бы рассматривать.

Версия Drupal: 
7.x
Вопрос задан 14.11.2017 - 12:26
Аватар пользователя im
im
22

Да включенный кеш через админку - admin/config/development/performance кеширование страниц и блоков.

Я не понимаю как так получается - сделал вывод user_agenta в шаблон чтобы мониторить изменения, так я у себя вижу user_agent другого компа, который ранее заходил. КАК????

Комментарий оставлен 14.11.2017 - 14:16

Если страница есть в кэше, то она отдаётся из него, независимо от того, через что зашёл пользователь. Ваш код, проверяющий $_SERVER просто не вызывается, а переменные в $_SERVER нигде не кэшируются.

Запретить отдавать страницу из кэша можно только на первом этапе бутстрапа, т.е. написанием кода прямо в settings.php. Или запретите класть нужную страницу в кэш - drupal_page_is_cacheable(FALSE)

Комментарий оставлен 14.11.2017 - 15:12

Спасибо за внесение ясности. То есть получается такой подход определения девайса и перестроение контента не имеет места быть? так как кеширование нужно на всех страницах.

Комментарий оставлен 14.11.2017 - 19:08

Ответы