2013-07-17 8 views
5

Vedo, in Strumenti per sviluppatori di Chrome, tempo di caricamento, tempo impiegato per ottenere una particolare risorsa dal server e altre informazioni, per tutte le risorse in una pagina Web.Come accedere all'oggetto performance di ogni risorsa in una pagina Web?

Voglio catturare queste statistiche utilizzando JavaScript. Come è possibile?

c'è un oggetto window.performance disponibile, ma solo per la pagina richiesta, non per le risorse di pagina. Esiste un modo per accedere all'oggetto performance di tutte le risorse della pagina.

+0

penso la maggior parte delle informazioni sulle prestazioni è tenuto sullo sfondo. Suggerisco di chiedere 'Google' un po '. – Shawn31313

risposta

3

Si dovrebbe essere in grado di utilizzare window.performance.getEntries() per ottenere specifiche risorse Statistiche:

var resource = window.performance.getEntries()[0]; 

console.log(resource.entryType); // "resource" 
console.log(resource.duration); // 39.00000000430737 
console.log(resource.startTime); // 218.0000000007567 

campione dal link qui sopra:

enter image description here

+0

Ho provato questo ma ottengo sempre il seguente errore TypeError: Object # non ha alcun metodo 'getEntries', sto usando chrome versione 22.0.1229.94 e firefox 22.0 – srikant

+0

@ user989512 The [related spec] (http: // www. w3.org/TR/resource-timing/) è ancora in flusso e è stato modificato a maggio. Chrome 28 sembra supportarlo, però. –

+0

grazie Jonathan, aggiorno chrome a 28 e ora funziona :-) – srikant

3

C'è ancora un bug nella versione più recente di Chrome - 29.0 .1547.76 m Quando si alza una richiesta xmlhttp, diciamo mentre si scarica un'immagine, si può vedere che la risorsa viene scaricata con il codice di stato 200 OK nella scheda di rete, ma performance.getEntries() o performance.getEntriesByName (resourceUrl) doesn ' t lista t l'accesso alle risorse. Quando il caricamento della pagina è completo e si valuta performance.getEntriesByName (resourceUrl) nella console, viene elencato correttamente. Quindi, c'è un ritardo nel chrome mentre si compilano le voci delle risorse nelle voci delle prestazioni? In IE10, funziona perfettamente.

0

window.performance.getEntries() potrebbe non restituire tutte le risorse. dopo bufferful alcuni record è disapear Basta controllare prima che gionro


codice di testa parte

var storedEntries = []; 
var updateStoredEntries = p => { 
    storedEntries.concat(
    p.getEntries().filter(rec => /yourRegExp/.test(rec.name)) 
) 
}; 
performance.addEventListener('resourcetimingbufferfull', e => { 
    updateStoredEntries(e.target) 
}); 

... parte successiva

updateStoredEntries(performance)