Использование модуля мобильных инструментов в Drupal6 с лаком? - PullRequest
1 голос
/ 18 августа 2011

Можем ли мы использовать модуль Mobile Tools в Drupal6 с Varnish?Я сомневаюсь, что лак будет кэшировать страницу индекса и не позволит перенаправить на мобильную версию страницы.

1 Ответ

1 голос
/ 14 октября 2011

Вы хотите, чтобы ваш сервер возвращал разные ответы в зависимости от используемого устройства / браузера. Это означает, что ваши страницы «меняются» в зависимости от используемого 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: Мобильный пользовательский агент обнаруживает себя в логике лаков точно так же, как это делают мобильные инструменты. E.g.:

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/

...