Bottlenecks detected in the browser
Browser bottlenecks cover the entire lifecycle of the user interaction exposing the reasons why a user interaction initiated in the browser took longer to complete than expected. To achieve this, Plumbr Browser Agent monitors different phases for all the HTTP requests triggered by the user interaction:
Plumbr uses different methods to capture the required information – using the combined power of observing the document tree for changes (Mutation Observer) and instrumenting native methods for requests (such as XMLHttpRequest) means we are able to keep track of resource loading start and end times. However, as those are basic start and end metrics and can be inaccurate, we additionally use the Resource Timings API to get a detailed breakdown of the request’s lifecycle from the browser whenever available.
As a result, Plumbr is capable of exposing the following bottlenecks in the browser:
- Browser – Redirect – in cases where there were a lot of redirects or some of the redirects were slow
- Browser – Cache Fetch – in situations where requests by browser were already cached in the local disk and extracting this resource from the disk was slow
- Browser – DNS lookup – whenever the DNS lookup was slow
- Browser – TCP connect – in cases where establishing the TCP connection to the backend server was slow
- Browser – SSL handshake – when establishing the secure connection to the backend server was slow
- Browser – Request Wait (Assets, XHR, Pageload) – in situations where an asset (CSS, JS, etc.), an XHR or an HTML page request from the backend server was slow
- Browser – Download (Assets, XHR, Pageload) – in cases where an asset, an XHR or an HTML page download from the backend server was slow
- Browser – HTTP Call (Assets, XHR, Pageload) – whenever the HTTP request for an asset, a XHR or a HTML page from the backend server was slow, but Plumbr wasn’t able to distinguish the exact phase due to missing support for Resource Timings API in user browser.
- Browser – Queue Wait – in situations where there are lots of resources to be fetched for particular page from the same domain, then browser can place these requests into a waiting queue.