Instrumentation to collect browser data
The script elements can be injected automatically or via the agent API by an APM agent installed in the back-end application, or they can be inserted manually via copy/paste. Both API calls and the copy/paste method allow you to control when and where the script elements are inserted.
We use these methods to collect the page load timing information:
|Method||Collecting page load timing information|
|Browsers with Navigation Timing Specification API||
For browsers that implement the Navigation Timing Specification API, page load timing information is read from the browser and reported to New Relic by the browser agent. The appropriate values simply are read from the webpage's performance timing object to capture the timing information.
|Browsers without Navigation Timing Specification API||
For browsers that do not implement the Navigation Timing Specification API, we rely on the NREUM cookie and the browser agent to collect timing information.
Browser also uses:
|Resource Timing API|
|Single page app (SPA) monitoring|
- The inline HEAD placement ensures the instrumentation code is loaded before all other scripts so that wrapping will occur when other libraries are registered.
- Inline code placement also eliminates the network round trips caused by externally referenced scripts.
For both https and http webpages, we transmit data via https. This summarizes when the data is transmitted to and from the webpage.
New Relic requires support of the SHA256 hash function, which some older operating systems do not support. If an end user lacks SHA256, the Browser agent will not connect to New Relic and data will not be sent.
|Fetch the agent script||Once following page load via https|
|Send page load timing data||Once following page load via https|
|Send session trace data||Every ten seconds when there is activity and a session trace is occurring via https|
|Send SPA data||At the end of an interaction via https|
For more help
For an example of how our engineers used page load timing to improve our own app performance when developing Browser, read this blog post.