即使通过像Modernizr这样的工具在浏览器中检测到现代技术(如csstransforms3d,csstransitions,requestAnimationFrame)的存在,您无法确定是否激活一些性能耗费的选项(如花哨的3D动画)或避免它.
我要问,因为浏览器是现代的(最新的Chrome或Firefox支持所有酷炫技术),但是操作系统的cpu,GPU和可用内存只是灾难性的(32位Windows XP,集成了GPU)因此,纯粹基于检测到的浏览器上限的决定是不好的.
解决方法
我记得a discussion of adding one such API to the web platform(navigator.hardwareConcurrency – 可用内核的数量),其中特征的对手解释了反对它的原因,特别是:
>应用程序可用的内核数量取决于其他工作负载,而不仅仅是可用的硬件.这不是常数,用户可能不愿意让您的应用程序使用可用硬件资源的全部(或任何固定部分);
>帮助客户“fingerprinting”.
>对于今天的具体情况太多了.该网页旨在在许多设备上工作,其中一些设备今天甚至不存在.
这些参数对于查询特定硬件资源的其他API也是有效的.您想要检查哪些特定的用户系统是否能负担得起运行“花哨的3D动画”?
作为用户,如果您的站点/应用程序的核心功能不需要,我宁可不使用额外的资源(如花哨的3D动画).令人伤心的是,由于缺乏硬件资源,我每几年都要购买一台新的笔记本电脑,以便能够继续使用我目前的工作流程,而不会慢慢运行.
也就是说,这是你可以做的:
>如果这对您来说足够重要,您可以首先运行简短的基准测试来检查性能,如果您怀疑系统资源短缺,则可以回到网站资源较少的版本.
>您可以通过检查操作系统,屏幕尺寸等来定位具体的高端平台.
>本文提到手机上的这种方法:http://blog.scottlogic.com/2014/12/12/html5-android-optimisation.html
> WebGL通过webgl.getParameter()提供有关渲染器的一些信息.参见此页面,例如:http://analyticalgraphicsinc.github.io/webglreport/