Использование модуля мобильных инструментов в Drupal6 с лаком?
Можем ли мы использовать модуль Mobile Tools в Drupal6 с Varnish? Я сомневаюсь, что лак будет кэшировать страницу индекса и не разрешит перенаправление на мобильную версию страницы.
Любая работа arround?
1 ответ
Вы хотите, чтобы ваш сервер возвращал разные ответы в зависимости от используемого устройства / браузера. Это означает, что ваши страницы "меняются" в зависимости от используемого http-заголовка запроса User-Agent, и теоретически вы должны указать любому http-прокси / кешу между ними использовать только кэшированную версию, если строка User-Agent совпадает, добавив http заголовок ответа:
Vary: User-Agent
Однако, поскольку браузеры, такие как Internet Explorer (в отличие от Chrome), используют много слегка отличающихся заголовков User-Agent, это полностью убьет ваш коэффициент попадания в кэш. Вам нужен более умный кеш, чтобы понять, что Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
для ваших целей равно Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30)
или любая другая строка агента пользователя, используемая браузером на рабочем столе.
Есть два варианта решения этой проблемы с помощью Varnish:
1: Выполните обнаружение мобильного пользовательского агента самостоятельно в логике, точно так же, как это делают мобильные инструменты. Например:
vcl_recv {
if (req.http.user-agent ~ 'ipad|ipod|iphone|android|mini opera|blackberry|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|pda|psp|treo') {
hash += "mobile"
}
}
2: Или всегда устанавливайте cookie сессии mobile=true
или же mobile=false
после того, как вы увидели первый запрос, и обслуживайте только кэшированные страницы для запросов с этим файлом cookie.
И после того, как вы немного погуглите, вы должны прочитать: http://fangel.github.com/mobile-detection-varnish-drupal/