使用Drupal6中的移动工具模块和清漆?

时间:2011-08-18 10:05:45

标签: drupal-6 varnish pressflow

我们可以在Drupal6中使用带有Varnish的Mobile Tools模块吗? 我怀疑varnish将缓存索引页面,并且不允许重定向到页面的移动版本。

还有什么工作吗?

1 个答案:

答案 0 :(得分:1)

您希望根据使用的设备/浏览器使服务器返回不同的响应。这意味着您的页面根据使用的User-Agent http请求标头“变化”,理论上,如果User-Agent字符串相同,则应通过添加http来指示其间的任何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=truemobile=false,并仅为使用此Cookie的请求提供缓存页面。

在谷歌搜索后,你应该阅读:http://fangel.github.com/mobile-detection-varnish-drupal/