collect asset & page url for slow pages #464
This commit is contained in:
parent
acdc076aef
commit
a5d37edef7
|
|
@ -5,12 +5,15 @@
|
|||
* Released under the Apache 2.0 License
|
||||
*/
|
||||
|
||||
var util = require('../util');
|
||||
var domains = {};
|
||||
var Stats = require('fast-stats').Stats;
|
||||
var util = require('../util'),
|
||||
domains = {},
|
||||
Stats = require('fast-stats').Stats,
|
||||
DomainTiming = require('../DomainTiming'),
|
||||
log = require('winston');
|
||||
|
||||
exports.processPage = function(pageData) {
|
||||
if (pageData.har) {
|
||||
var pageURL = util.getURLFromPageData(pageData);
|
||||
pageData.har.forEach(function(har) {
|
||||
har.log.entries.forEach(function(entry) {
|
||||
var domain = domains[util.getHostname(entry.request.url)];
|
||||
|
|
@ -18,41 +21,40 @@ exports.processPage = function(pageData) {
|
|||
if (domain) {
|
||||
if (entry.timings) {
|
||||
domain.count++;
|
||||
total = entry.timings.blocked + entry.timings.dns + entry.timings.connect + entry.timings.ssl + entry.timings.send + entry.timings.wait + entry.timings.receive;
|
||||
if (total>domain.total.max) {
|
||||
domain.slowestUrl = entry.request.url;
|
||||
}
|
||||
domain.blocked.push(entry.timings.blocked);
|
||||
domain.dns.push(entry.timings.dns);
|
||||
domain.connect.push(entry.timings.connect);
|
||||
domain.ssl.push(entry.timings.ssl);
|
||||
domain.send.push(entry.timings.send);
|
||||
domain.wait.push(entry.timings.wait);
|
||||
domain.receive.push(entry.timings.receive);
|
||||
domain.total.push(total);
|
||||
total = entry.timings.blocked + entry.timings.dns + entry.timings.connect + entry.timings.ssl + entry.timings
|
||||
.send + entry.timings.wait + entry.timings.receive;
|
||||
domain.blocked.add(entry.timings.blocked, entry.request.url, pageURL);
|
||||
domain.dns.add(entry.timings.dns, entry.request.url, pageURL);
|
||||
domain.connect.add(entry.timings.connect, entry.request.url, pageURL);
|
||||
domain.ssl.add(entry.timings.ssl, entry.request.url, pageURL);
|
||||
domain.send.add(entry.timings.send, entry.request.url, pageURL);
|
||||
domain.wait.add(entry.timings.wait, entry.request.url, pageURL);
|
||||
domain.receive.add(entry.timings.receive, entry.request.url, pageURL);
|
||||
domain.total.add(total, entry.request.url, pageURL);
|
||||
} else {
|
||||
console.log('Missing timings in the HAR');
|
||||
log.log('info', 'Missing timings in the HAR');
|
||||
}
|
||||
|
||||
} else {
|
||||
if (entry.timings) {
|
||||
total = entry.timings.blocked + entry.timings.dns + entry.timings.connect + entry.timings.ssl + entry.timings.send + entry.timings.wait + entry.timings.receive;
|
||||
total = entry.timings.blocked + entry.timings.dns + entry.timings.connect + entry.timings.ssl + entry.timings
|
||||
.send + entry.timings.wait + entry.timings.receive;
|
||||
|
||||
domains[util.getHostname(entry.request.url)] = {
|
||||
domain: util.getHostname(entry.request.url),
|
||||
blocked: new Stats().push(entry.timings.blocked),
|
||||
dns: new Stats().push(entry.timings.dns),
|
||||
connect: new Stats().push(entry.timings.connect),
|
||||
ssl: new Stats().push(entry.timings.ssl),
|
||||
send: new Stats().push(entry.timings.send),
|
||||
wait: new Stats().push(entry.timings.wait),
|
||||
receive: new Stats().push(entry.timings.receive),
|
||||
slowestUrl: entry.request.url,
|
||||
total: new Stats().push(total),
|
||||
blocked: new DomainTiming(entry.timings.blocked, entry.request.url, pageURL),
|
||||
dns: new DomainTiming(entry.timings.dns, entry.request.url, pageURL),
|
||||
connect: new DomainTiming(entry.timings.connect, entry.request.url, pageURL),
|
||||
ssl: new DomainTiming(entry.timings.ssl, entry.request.url, pageURL),
|
||||
send: new DomainTiming(entry.timings.send, entry.request.url, pageURL),
|
||||
wait: new DomainTiming(entry.timings.wait, entry.request.url, pageURL),
|
||||
receive: new DomainTiming(entry.timings.receive, entry.request.url, pageURL),
|
||||
total: new DomainTiming(total, entry.request.url, pageURL),
|
||||
count: 1
|
||||
};
|
||||
} else {
|
||||
console.log('Missing timings in the HAR');
|
||||
log.log('info', 'Missing timings in the HAR');
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -73,4 +75,4 @@ exports.generateResults = function() {
|
|||
|
||||
exports.clear = function() {
|
||||
domains = {};
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
Stats = require('fast-stats').Stats;
|
||||
|
||||
function DomainTiming(time, url, pageUrl) {
|
||||
this.stats = new Stats().push(time);
|
||||
this.maxTimeUrl = url;
|
||||
this.maxTimePageUrl = pageUrl;
|
||||
};
|
||||
|
||||
DomainTiming.prototype.add = function(time, url, pageUrl) {
|
||||
if (time > this.stats.max) {
|
||||
this.maxTimeUrl = url;
|
||||
this.maxTimePageUrl = pageUrl;
|
||||
}
|
||||
this.stats.push(time);
|
||||
};
|
||||
|
||||
DomainTiming.prototype.stats = function() {
|
||||
return this.stats;
|
||||
}
|
||||
|
||||
module.exports = DomainTiming;
|
||||
|
|
@ -26,14 +26,14 @@
|
|||
{{#each domains}}
|
||||
<tr>
|
||||
<td>{{this.domain}}</td>
|
||||
<td>{{this.blocked.max}}</td>
|
||||
<td>{{this.dns.max}}</td>
|
||||
<td>{{this.connect.max}}</td>
|
||||
<td>{{this.ssl.max}}</td>
|
||||
<td>{{this.send.max}}</td>
|
||||
<td>{{this.wait.max}}</td>
|
||||
<td>{{this.receive.max}}</td>
|
||||
<td><a href="{{this.slowestUrl}}">{{this.total.max}}</a></td>
|
||||
<td><a href="{{this.blocked.maxTimeUrl}}">{{this.blocked.stats.max}}</a></td>
|
||||
<td><a href="{{this.dns.maxTimeUrl}}">{{this.dns.stats.max}}</a></td>
|
||||
<td><a href="{{this.connect.maxTimeUrl}}">{{this.connect.stats.max}}</a></td>
|
||||
<td><a href="{{this.ssl.maxTimeUrl}}">{{this.ssl.stats.max}}</a></td>
|
||||
<td><a href="{{this.send.maxTimeUrl}}">{{this.send.stats.max}}</a></td>
|
||||
<td><a href="{{this.wait.maxTimeUrl}}">{{this.wait.stats.max}}</a></td>
|
||||
<td><a href="{{this.receive.maxTimeUrl}}">{{this.receive.stats.max}}</a></td>
|
||||
<td><a href="{{this.total.maxTimeUrl}}">{{this.total.stats.max}}</a></td>
|
||||
<td>{{this.count}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
|
|
|||
Loading…
Reference in New Issue