javascript如何判断页面的性能
前端开发中,有时候为了更好的用户体验,需要判断用户当前的页面(或者浏览器、电脑)的性能。例如,如果当前页面已经很卡了,就不要显示一些高级动画,或者不要执行一些复杂的计算。那么如何怎样用javascript来判断当前页面的性能呢?
可能有人不理解我的提问,我这里抛个砖。下面是我找到的其中一种方法,通过计算setTimeout实际的延迟来判断当前页面性能。
var start = new Date().getTime();
var standardTime = 100; // 标准是100ms
var timer = setTimeout(function(){
clearTimeout(timer);
var end = new Date().getTime();
var realTime = end - start;
var delay = realTime - standardTime; // 时间差
console.log('性能差异:', delay, standardTime);
}, standardTime);
但setTimeout可能会被当前执行的其他脚本或者UI渲染给阻塞了,所有这种方法应该是不太真实反映当前页面的性能。欢迎大家说说自己的想法。
寂寞的槑槑姬
11 years, 1 month ago
Answers
我觉得你这个想法不太对路,判断客户端的性能这件事情就和判断客户端的浏览器型号一样太不靠谱了,因为你要判断的面实在太广了,这个标准无法量化啊。
就拿你这个例子来说吧, 100 ms 的标准是谁定的?你怎么知道这个标准就是一个恰当的分界线呢?如果我作为一个用户计算出的时间差总是在你的判断临界点(delay)上下浮动,那我看你的网站岂不是一会儿有效果,一会儿没效果,我不以为你的应用疯了啊?
所以我觉得即使能够真实反映当前页面的性能,但由于每一次渲染都是有差异的(比如说刷新之后),所以这个思路会给部分倒霉的用户(刚好在临界点上下波动)很不好的体验。
scheer
answered 11 years, 1 month ago