根据用户代理服务JavaScript



我对在Web服务器中使用用户代理检测的优点和缺点确定要发送给客户的JavaScript资源的优点和缺点。

特别是,如果某些Web浏览器本地支持功能,而另一些Web浏览器需要冗长的JavaScript解决方法,那么最好将解决方法提供给所有人并仅在需要客户端时运行它,或者仅将解决方法仅服务于需要它的浏览器并将本机功能周围的薄包装发送到其余部分?

第二种方法可能会出现哪些问题,并且它们可能超过较小响应的辅助浏览器的好处?

您可以使用 RequireJS(或类似)按需加载"可选"东西。

1)在页面加载上...用于小型测试(Modernizr)的功能测试

2)如果测试成功,请使用本机,如果失败,请使用requirej加载其他资源

3)利润。

这确实假设您不介意额外的http请求。...太多的测试,加载,重复过程可以放慢速度,而不是包括一个大(R)文件,因此,这是依赖的,但是那里有绝对是合理的中间立场...

通常,将JavaScript的一份副本发送给所有客户端,并让JavaScript本身具有功能检测,以决定如何最好地处理每个浏览器。这具有以下优点:

  1. 功能检测比浏览器检测更准确和前进,即使您从未见过的浏览器也是如此。
  2. 您将获得所有浏览器的JavaScript副本,通常更容易测试,并且不需要服务器端分发逻辑。
  3. 开发一组常见的JavaScript,通常比开发n个单独的网站JavaScript的n个单独版本要容易得多。

既不在pro或con中,但是从SEO的角度说,您应该考虑GoogleBot始终会看到"解决方法"版本。(当没有识别用户代理时,我假设是默认一个)

我在这里说,因为在实施基于用户代理/cookie的自定义JS规则时,我看到了几个网站进行潜水。

回到您的原始问题,我建议使用单个版本的方法 - 仅仅是因为它更易于管理,并且不需要您跟踪脚本的多个版本。

@blsully在这里还提出了一个很好的观点( 1),内容涉及额外的HTTP请求。您的整体现场速度可能会暴跌,或者任何收益将大大降低。

加速您可以做很多更好的事情 - 如果这确实是您的目标...

另一种可能性(没有其他HTTP请求)是使用用户代理标头发送不同版本的内容。请查看有关此主题的Device Atlas文章,或者查看有关此技术在Wild中使用的参考文章。

我认为是专业人士:

  • 爱人发送给客户端的内容的金额(特别是用于移动设备,这不错)
  • 浏览器将使用不需要代码的情人资源

cons:

  • 需要维护各种数量的JavaScript版本
  • 用户代理解析正在移动目标

最新更新