【问题标题】:How can I detect mobile devices (and/or mobile cookie) without scripting (PHP) or server configuration (Nginx)?如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?
【发布时间】:2011-11-21 16:56:50
【问题描述】:

我们即将推出我们网站的移动版本。我们的完整网站和移动网站只是主题不同,即URL相同,只是前端不同。

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

1. 检查 cookie(移动 == 真或假)以确定是否已经定义了完整与移动偏好(由用户手动或通过我们端的检测)。

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/设备检测方法?

【问题讨论】:

    标签: php caching cookies mobile nginx


    【解决方案1】:

    你可以使用 javascript。

    试试这个:http://detectmobilebrowsers.com/

    【讨论】:

    • 酷,我绝对可以在所有页面上使用 JavaScript。我想我会将它设置为仅在完整的 HTML 缓存页面上检查使用 JS,然后对所有其他页面使用 PHP,因为 JS 检测至少需要部分页面加载。我希望在实际加载页面之前检测到,但考虑到现有的限制,这是一个很好的解决方案。
    【解决方案2】:

    我过去曾在 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;
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多