有没有办法了解“平台”访问网页的硬件资源?

时间:2015-08-02 19:21:40

标签: javascript css html5 performance animation

我希望能够从网页上了解浏览器的硬件资源,或者至少是粗略估计。

即使您通过csstransforms3d等工具在浏览器中检测到现代技术(例如csstransitionsrequestAnimationFrameModernizr)的存在,也无法确定是否激活一些性能消耗选项(如花式3D动画)或避免它。

我问,因为我有(很多)浏览器 是现代 (支持所有酷炫技术的最新Chrome或Firefox)但操作系统CPU的情况,GPU和可用内存只是灾难性的(带有集成GPU的32位Windows XP),因此完全基于检测到的浏览器上限的决定并不好。

2 个答案:

答案 0 :(得分:2)

虽然Nickolay给出了非常好的和广泛的解释,但我想建议一个非常简单但可能有效的解决方案 - 您可以尝试测量页面加载所需的时间并决定是否使用资源 - 饥饿功能与否(Gmail的功能类似 - 如果加载时间过长,则会显示切换到“基本HTML”版本的建议)。

这个想法是,对于慢速计算机,加载任何页面,无论内容如何,​​平均来说应该比现代计算机慢得多。获取加载页面所花费的时间should be simple,但有几点需要注意:

  • 您需要进行一些实验,以确定将“太慢”阈值放在何处。
  • 您需要记住,缓慢的连接会导致页面加载速度变慢,但这可能会在极少数情况下产生影响(使用 DOM ready 而不是 load 事件也可以在这里帮助。)
  • 此外,由于缓存,用户第一次加载您的网站可能会慢得多。一个简单的解决方案是将结果保存在cookie或本地存储中,并且只在用户第一次访问时考虑加载时间。
  • 不要忘记始终,无论您使用何种检测机制及其准确程度,都允许用户在常规,资源消耗和更快“uglier”版本之间进行选择 - 有些人喜欢看起来更好看的效果,即使这意味着网站会更慢,而其他价值的速度和快感更多。

答案 1 :(得分:1)

通常,有关用户系统的可用(到网页)信息非常有限。

我记得a discussion of adding one such API to the web platformnavigator.hardwareConcurrency - 可用内核的数量),该功能的反对者解释了反对它的原因,特别是:

  • 您的应用可用的核心数量取决于其他工作负载,而不仅仅取决于可用的硬件。它不是常数,用户可能不愿意让您的应用程序使用可用硬件资源的所有(或您选择的任何固定部分);
  • 帮助"fingerprinting"客户。
  • 太依赖于今天的细节。网络设计用于许多设备,其中一些设备现在甚至不存在。

这些参数也可用于查询特定硬件资源的其他API。 您想具体检查用户的系统是否能够负担得起运行一个花哨的3D动画"?

作为用户,如果您的网站/应用的核心功能不是必需的,那么您并没有使用其他资源(例如精美的3D动画)。真的很遗憾我每隔几年就要购买一台新笔记本电脑,以便能够继续使用我当前的工作流程而不会因为缺乏硬件资源而非常慢地运行。

那就是说,你可以做什么:

  • 为正在使用"完整"的用户提供备用链接。该网站的版本。
    • 如果这对您来说非常重要,您可以先运行简短的基准来检查性能,如果您怀疑系统资源不足,可以回退到资源较少的网站版本。
  • 您可以通过检查操作系统,屏幕大小等来定位特定的高端平台。
  • WebGL通过webgl.getParameter()提供有关渲染器的一些信息。请参阅此页面,例如:http://analyticalgraphicsinc.github.io/webglreport/