没有按设备按功能划分的公共性能数据库,也没有任何自动方式来打开和关闭潜在的慢速功能。您必须自己决定哪些功能在哪些设备上运行缓慢并将其关闭,例如
body.transitions-are-slow * {
transition-property: none !important;
}
transitions-are-slow
然后根据某种设备嗅探和对该设备性能的经验知识安排将课程放在身体上。
那是针对 CSS 的,但您也提到了 JS。但是,我想不出某些特定 JS API 在某些特定设备上特别慢的情况。JS 会在较慢的设备上均匀减速。因此,我真的不明白为什么或如何考虑基于设备性能问题关闭单个 JS 功能。
有比时间戳代码执行块更好的方法吗?
没有明显的方法来标记 CSS 性能,但对于 JS,我想你可以执行以下操作,请谨慎使用:
function kill_if_slower_than(fn, threshold) {
var killed = false;
return function() {
if (killed) return;
var start = performance.now();
var result = fn.apply(this, arguments);
killed = performance.now() - start > threshold;
return result;
};
}
threshold
这将返回一个函数,该函数在第一次执行时间超过毫秒时将变为无操作。您显然不想在纯粹可选的东西以外的任何东西上使用它。它也不会帮助您处理异步情况。
由于分辨率更高,我在performance.now
上面使用过,但是在某些较旧的浏览器上,您可能需要回退到Date.now()
.