1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| class ResourceMonitor { constructor() { this.resourceList = []; } getResourceDetails() { const resources = performance.getEntriesByType('resource'); return resources.map(item => { const timings = { dns: item.domainLookupEnd - item.domainLookupStart, tcp: item.connectEnd - item.connectStart, request: item.responseEnd - item.requestStart, size: item.encodedBodySize }; return { name: item.name, type: item.initiatorType, timings }; }); } analyzeBottlenecks() { const resources = this.getResourceDetails(); const bottlenecks = { slow_dns: [], slow_tcp: [], slow_request: [], large_files: [] }; resources.forEach(resource => { const { timings, name } = resource; if (timings.dns > 100) { bottlenecks.slow_dns.push(name); } if (timings.tcp > 100) { bottlenecks.slow_tcp.push(name); } if (timings.request > 500) { bottlenecks.slow_request.push(name); } if (timings.size > 1024 * 1024) { bottlenecks.large_files.push(name); } }); return bottlenecks; } }
|