我们可以将 Drupal6 中的 Mobile Tools 模块与 Varnish 一起使用吗?我怀疑清漆会缓存索引页面,并且不允许重定向到页面的移动版本。
周围有工作吗?
你想让你的服务器根据使用的设备/浏览器返回不同的响应。这意味着您的页面会根据使用的 User-Agent http 请求标头而“变化”,理论上您应该通过添加 http 来指示两者之间的任何 http 代理/缓存仅在 User-Agent 字符串相同时使用缓存版本响应头:
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/