在服务器端(PHP)或客户端(Javascript)检测移动浏览器是否更好/更快?

时间:2012-10-26 20:02:02

标签: php javascript jquery mobile jquery-mobile

我见过代码可以检测是否有人在Javascript中使用移动浏览器(例如jQuery脚本),而且我看到一些代码在PHP(或其他服务器端语言)中工作。但我从来没有看到一个很好的解释,一个人在一切或任何情况下是否比另一个更好。是否有更好的选择?

6 个答案:

答案 0 :(得分:4)

典型的答案:这取决于你为什么要进行检查......

从我的观点来看,这是我通常考虑的事情:

  • 如果您想根据浏览器向用户展示不同的体验(手机,平板电脑,笔记本电脑等),请在服务器上进行。

  • 如果您想提供相同的一般体验,但需要考虑浏览器兼容性问题,请在客户端进行。

UX领域的一些人也认为“坏形式”是向用户呈现空白页面并动态填充。相反,应填充初步页面,并动态添加或更改内容。如果您担心这一点,可能需要服务器端和客户端的组合。

答案 1 :(得分:1)

我会说更好的方法是在服务器端,因为对于Javascript,你需要等到页面呈现,而在服务器端,它发生在之前。

答案 2 :(得分:1)

如果您尝试检测这一点以便确定哪些javascript功能可用,那么您将获得更高的准确性,如果您在JavaScript中执行此操作,则不会有任何重大速度损失。

如果您要完全更改所呈现的页面类型,例如完整的网站或移动网站,那么最好不要使用此服务器端。

答案 3 :(得分:0)

绿色比红色好吗?

一切都有其优点和缺点。例如,在服务器端执行它更可靠,在客户端执行意味着减少服务器的工作量。

事实上,客户端可能禁用了JavaScript (请参阅适用于Firefox的NoScript扩展程序和适用于Chrome的ScriptNo,它允许智能用户仅在您实际需要的网站上启用JS 它 - 一个很好的副作用是它现在几乎消除了所有广告,因为它们现在很大程度上依赖于来自第三方域的JS)。因此,只需使用User-Agent字符串就可以可靠,但灵活更少。

如果你使用JS-heavy,你可能会使用哑服务器,即你不需要慢速PHP,但你可以通过高性能静态服务提供所有数据,通过各种CDN等 - 但是任何需要JS的东西都会对搜索蜘蛛有用 ,并且有些用户可能只是阻止它。

答案 4 :(得分:0)

正如Ricebowl所说,永远不要相信客户。但是,如果你信任客户,我觉得这几乎总是一个问题。如果您的申请值得写,那么值得妥善保管。如果有人可以通过编写自己的客户端并传递你不期望的数据来打破它,这是一件坏事。因此,您需要在服务器上进行验证。

答案 5 :(得分:0)

作为一名网络开发人员,UX和UI程序员,我认为如果有人想改变他们的UA,那很好。他们可以处理不兼容问题。至于手机和桌面我会推荐光线版本的browscap.ini,而不是搜索ismobiledevice的设备检查。 if语句是真还是假,那么你也可以检查平板电脑。在if mobile子句中,检查关联数组中的istablet键。您可以将它用于手机或平板电脑。