我如何检测移动设备(和/或移动cookie)没有脚本(PHP)或服务器配置(Nginx)


How can I detect mobile devices (and/or mobile cookie) without scripting (PHP) or server configuration (Nginx)?

我们将很快推出手机版网站。我们的完整网站和手机网站只是在主题上不同,也就是说网址是一样的,区别只是在前端。

当用户访问我们的网站时,我们需要能够做到以下几点:

1。检查cookie (mobile == true或false)以确定是否已经定义了完整与移动首选项(由用户手动或通过我们端的检测)。

2。如果没有设置移动cookie,在第一页查看时检测用户的设备,并设置移动cookie为true或false。

3。根据#1和/或#2的结果提供适当的体验,无论是完整的还是移动的。

最初我使用PHP来检测工作良好的设备。然而,我们的网站在主页和其他一些页面上使用了极端的全HTML缓存(. HTML文件被写入到我们的web根目录下的一个文件夹中,如果Nginx找到它们,它们就会被提供服务,而不是通过PHP请求-缓存每15分钟被清除一次),所以我不能依靠PHP从我们的主要用户入口检测移动设备(据我所知在这一点上…)。

不能依赖PHP,然后我把移动cookie检查和设备检测到Nginx配置文件(Apache本地为我开发,翻译我们的服务器人员为Nginx)。然而,我们的服务器管理人员告诉我们,新的Nginx配置文件对性能的影响会很大("性能影响"在我们办公室是一个4个字母的词)。

基本上我被告知完整的HTML缓存的主页必须留在原地,我不能改变Nginx配置文件。是否有另一种方法的cookie/设备检测,我可以利用给定的限制从上面?

你可以使用javascript。

试试:http://detectmobilebrowsers.com/

我以前在CSS媒体查询和JavaScript中使用过这个巧妙的技巧…

在你的网站关闭前的<body>标签:

<div id="mobiledetect" style="display: none;"></div>

在你的CSS文件中:

@media screen and (max-device-width: 768px) {
  #mobiledetect {
    text-transform: uppercase;
  }
}

在你的JavaScript文件中(取决于jQuery,但你可以修改它):

$(function() {
  $is_mobile = false;
  if($('#mobiledetect').css('text-transform') == 'uppercase') {
    $is_mobile = true;
  }
});