移动设备检测高流量网站

11

我有一个高流量的网站(每天超过一百万访问者),需要检测他们的用户代理。我有一个超过1000个移动设备的列表。

根据他们访问的页面和他们提供的参数(例如:/document/page/1?textsize=large),我运行memcache来输出动态内容。

我没有静态页面,也不能使用子域名。

我发现不同的脚本可以检查用户代理:

http://www.mobile-phone-specs.com/user-agent-browser/0/

http://detectmobilebrowsers.mobi/

http://detectmobilebrowsers.com/

我的问题是,每次页面加载时执行这些检查会使我的网站变慢。

编辑:我需要在我的PHP代码中知道它是否是移动或非移动浏览器。

我如何让这个检查运行得更快?


3
为什么不在用户首次访问网站时进行检查,然后设置一个会话变量来存储他们应该看到的版本? - Josh
@Josh 好主意,但我仍然需要寻找数百个设备,这会使速度变慢吗? - aki
我猜Yes123不感兴趣! - aki
2
我会补充一下Josh所说的:1)寻找常见设备(例如iphoneandroidsamsung),不要查看每个具体设备,然后在检查设备时,检查哪一个设备对您的网站流量更多,这样您就有更多机会立即获得正确的设备,并花费更少的时间preg_matching用户代理。 - Book Of Zeus
2个回答

12

请使用以上所有答案。使用CSS来正确显示您的页面,因为它只是显示,让浏览器处理它。但要小心CSS / JS / 图像 / HTML页面的大小,对于速度较慢的设备,可能需要加载一段时间才能加载不加载图像或大型JS文件(例如旧翻转手机,在上面看不到任何东西)

在您的PHP中使用逻辑脚本来查找最常用的浏览器,然后将其保存在会话中,这样您就不必每次都检查它。

类似以下代码:

if(!$_SESSION['var']) {
  if(stripos($_SERVER['HTTP_USER_AGENT'], 'iphone') !== FALSE) {
    $_SESSION['var'] = 'iphone';
  }
  // etc...
  // your else case can be desktop or default.
}

3
在你的情况下,我建议通过响应式设计和CSS策略将移动设备检测外包到客户端...这样可以减轻服务器处理流量负载的压力。
使用CSS3媒体查询来覆盖移动设备的样式是目前非常流行的方法。 http://webdesignerwall.com/tutorials/css3-media-queries 示例网站 - 开始缩小你的浏览器窗口并查看它的效果。

能够工作,谢谢。但是,我的PHP代码中还没有添加请求,我该怎么做? - aki
主要是统计数据,但也不能允许下载.exe文件或不兼容的文档。 - aki
只需为不想在移动浏览器中显示的链接/元素添加一个.no_mobile类,然后在移动设备的部分中,只需使用.no_mobile { display:none }即可。 - jondavidjohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接