Использование модуля мобильных инструментов в 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/

Другие вопросы по тегам