客户端用户代理检测已知不太可靠,且被建议改用特性检测。但基于HTTP请求中的用户代理字段而有所不同地响应是否也不好?
一个例子是根据传入的用户代理是否为移动设备或桌面设备发送较小或较大的图像。
客户端用户代理检测已知不太可靠,且被建议改用特性检测。但基于HTTP请求中的用户代理字段而有所不同地响应是否也不好?
一个例子是根据传入的用户代理是否为移动设备或桌面设备发送较小或较大的图像。
看到您对问题的更新后,我有以下评论要贡献。 我是否想要嗅探图像请求并基于用户代理向客户端提供图像?
如果这是唯一的变量,那么也许可以工作,但很少情况下您只会变化图像。我不想每个请求都进行检测,因为我想为客户端提供一致的解决方案。这意味着我为他们提供了一个页面,导致他们请求正确的资源。这个页面为所有集成资源产生一个单一的一致解决方案。此文档中的所有变化都适用于特定视图。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent
今天,在提供HTML之前,查找这些字符串是了解设备是否在移动设备(或平板电脑)上运行的唯一方法。你所描绘的场景是这种情况的完美说明。在服务器级别上尝试检测移动浏览器并降低发送给它们的内容是完全合适的,因为你正在尝试根据他们的需求调整用户体验(例如,通过提供较小的图像和更好的内容流以适应较小屏幕的限制),同时平衡服务器的需求(发送较小的图像,从而减少负载和带宽)。这种策略只需要改进。
这里有一些设计原则,你应该始终遵循,以确保你的用户代理检测实践不会被你的用户视为可疑:
始终提供查看网站完整版本的功能,并相应地规划您的负载配置文件。否则,人们会试图通过更改代理来规避此问题。
始终在创建模态视图时清楚定义网站内容的修改。这将消除您可能已经进行或未进行的任何FUD的疑虑。
始终提供到替代版本网站的路径。例如,使用类似http://mobile.example.org
的东西来迁移人们到移动版本,做出设计层面的假设,即当请求该路径时,您的受众已经明确要求。
奖励用户为您提供正确的代理凭据,通过为他们提供更好的内容和性能体验来回报他们。当您预见到他们的需求并为他们浏览的网站版本提供更快的性能时,用户会更加满意。
避免滥用和手动重定向模式。例如,当您检测到用户正在运行iOS时,不要使用大而笨重的弹出广告来阻止他们使用您的移动应用程序。(诚然,这是我个人的烦恼。)
永远不要基于用户代理限制网站的访问权限(而是选择严厉警告用户如果他们离开轨道会发生什么,并围绕此起草您的支持政策)。例如,我们中的许多人都很喜欢为“最适合在Internet Explorer中使用”的网站更改代理,以防止其他浏览器。如果可以避免,您不应成为这种不良实践的又一个例子。
我同意这个答案中对于使用统计分析的观点,因此请不要误解我的意思。但是,作为一个在这个领域积极工作的人,我可以告诉你并没有什么神奇的方法可以给你完美的分类确定性。然而,启发式算法可以帮助你更有效地平衡负载,为此,一旦你明确定义了可接受的错误率,浏览器询问策略可以对你有所帮助。
m2w
,可以覆盖此重定向机制。