据我了解,当调用 page.open
时,PhantomJS 开始加载页面。
首先,它加载页面资源,然后渲染页面,然后调用 open
回调。
现在我只想知道渲染时间(即没有资源加载时间)。我可以这样做吗?
最佳答案
Phantom js 使用 webkit 引擎..因此它的行为将类似于 chrome。 网页的渲染在收到第一个资源后立即开始。它不会等待所有资源到达。 估计渲染时间的一个简单技术是在本地拥有资源,这样网络延迟就会最小化。并使用这样的脚本获取加载时间。
t = Date.now();
page.open(address, function(status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
t = Date.now() - t;
console.log('Loading ' + address);
console.log('Loading time ' + t + ' msec');
}
phantom.exit();
});
无论如何,这并不总是准确且可行的。
因此,另一种技术是计算最后一个资源到达后准备好页面所需的时间。(不需要进一步的网络请求)。如果某些脚本或资源有问题,这将给出估计。
var t = Date.now();
page.onResourceReceived = function(response) {
if(Date.now() > t)
{
t = Date.now();
}
};
page.open(address, function(status) {
if (status !== 'success') {
console.log('FAIL to load the address');
}
else
{
t = Date.now() - t;
console.log('Loading ' + address);
console.log('Rendering time' + t + ' msec');
}
phantom.exit();
});
关于javascript - 如何测量PhantomJS中的渲染时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34383199/