IP Library › Granted Patent US 10,785,281
Granted Patent B1
US 10,785,281 · App. 16/293,913 · Granted Sep 22, 2020

Breaking down the load time of a web page into coherent components

Inventors: Adam Ross Cath (San Francisco, CA); Swathi Bhat (Campbell, CA); Maxwell Taylor Virgil (San Francisco, CA); Brian Robert Zaik (San Francisco, CA); Puneet Anand (Saratoga, CA)
Assignee: Cisco Technology, Inc.
H04L67/025H04L41/0681H04L41/22H04L61/1511H04L67/2814
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,785,281
App. No.
16/293,913
Granted
Sep 22, 2020
Kind
B1
Abstract

In one embodiment, a monitoring process monitors timing of navigations and resources of a web page load, and attributes timing of the navigations and resources into corresponding timing components. In particular, the monitoring process may attribute timing of static first-party resources and timing of hypertext transfer protocol (HTTP) redirects to a core frontend timing component, and may attribute timing of dynamic first-party resources to a core backend timing component. The monitoring process may also attribute timing of content delivery network (CDN) resources to a CDN timing component, and may attribute timing of non-CDN third-party resources to a third-party timing component. Lastly, the monitoring process may further attribute timing of network infrastructure connections to a core connections timing component. Accordingly, the monitoring process may then perform one or more actions based on the attributing steps.

Claims (62)

1. A method, comprising:

monitoring, by a monitoring process, timing of navigations and resources of a web page load;

attributing, by the monitoring process, timing of static first-party resources and timing of hypertext transfer protocol (HTTP) redirects to a core frontend timing component;

attributing, by the monitoring process, timing of dynamic first-party resources to a core backend timing component;

attributing, by the monitoring process, timing of content delivery network (CDN) resources to a CDN timing component;

attributing, by the monitoring process, timing of non-CDN third-party resources to a third-party timing component;

attributing, by the monitoring process, timing of network infrastructure connections to a core connections timing component; and

performing, by the monitoring process, one or more actions based on the attributing steps.

2. The method as in claim 1 , further comprising:

dividing the timing of the web page load into discrete spans, each span beginning at a corresponding start of either a navigation or a resource; and

in response to a plurality of particular timing components being concurrently active during any particular span, prorating that particular span across the plurality of particular timing components.

3. The method as in claim 2 , wherein prorating comprises:

distributing a timing of that particular span to each of the plurality of particular timing components based on a number of resources and navigations in each respective timing component of the plurality of particular timing components.

4. The method as in claim 2 , further comprising:

attributing idle time spans to the core frontend timing component.

5. The method as in claim 1 , further comprising:

determining CDN resources based on a corresponding internet protocol (IP) address being located within IP address blocks for one or more known CDNs.

6. The method as in claim 1 , further comprising:

determining first-party resources based on a domain name server (DNS) lookup.

7. The method as in claim 1 , further comprising:

determining third-party resources based on resources being neither CDN resources nor first-party resources.

8. The method as in claim 1 , further comprising:

determining network infrastructure connections as one or more of a domain name server (DNS) connection, a transmission control protocol (TCP) connection, and a secure socket layer (SSL) connection.

9. The method as in claim 8 , further comprising:

distinguishing DNS, TCP, and SSL connections as sub-components of the core connections timing component.

10. The method as in claim 1 , further comprising:

determining network infrastructure connections as only connections under at least partial first-party control.

11. The method as in claim 1 , wherein static first-party resources comprise one or more of stylesheets, javascript files, or images, and wherein dynamic first-party resources comprise one or more of Ajax requests or Extensible Markup Language Hypertext Transfer Protocol Requests (XHRs).

12. The method as in claim 1 , wherein the one or more actions comprise at least one of: displaying attributions of timing to respective timing components; reporting the attributions of timing to respective timing components; triggering one or more alarms based on the attributions of timing to respective timing components; and detecting and mitigating one or more anomalies based on the attributions of timing to respective timing components.

13. A tangible, non-transitory, computer-readable medium storing program instructions that cause a computer to execute a process comprising:

monitoring timing of navigations and resources of a web page load;

attributing timing of static first-party resources and timing of hypertext transfer protocol (HTTP) redirects to a core frontend timing component;

attributing timing of dynamic first-party resources to a core backend timing component;

attributing timing of content delivery network (CDN) resources to a CDN timing component;

attributing timing of non-CDN third-party resources to a third-party timing component;

attributing timing of network infrastructure connections to a core connections timing component; and

performing one or more actions based on the attributing steps.

14. The computer-readable medium as in claim 13 , wherein the process further comprises:

dividing the timing of the web page load into discrete spans, each span beginning at a corresponding start of either a navigation or a resource; and

in response to a plurality of particular timing components being concurrently active during any particular span, prorating that particular span across the plurality of particular timing components.

15. The computer-readable medium as in claim 14 , wherein prorating comprises:

distributing a timing of that particular span to each of the plurality of particular timing components based on a number of resources and navigations in each respective timing component of the plurality of particular timing components.

16. The computer-readable medium as in claim 13 , wherein the process further comprises:

determining CDN resources based on a corresponding internet protocol (IP) address being located within IP address blocks for one or more known CDNs;

determining first-party resources based on a domain name server (DNS) lookup; and

determining third-party resources based on resources being neither CDN resources nor first-party resources.

17. The computer-readable medium as in claim 13 , wherein the process further comprises:

determining network infrastructure connections as one or more of a domain name server (DNS) connection, a transmission control protocol (TCP) connection, and a secure socket layer (SSL) connection.

18. The computer-readable medium as in claim 13 , wherein the process further comprises:

determining network infrastructure connections as only connections under at least partial first-party control.

19. The computer-readable medium as in claim 13 , wherein the one or more actions comprise at least one of: displaying attributions of timing to respective timing components; reporting the attributions of timing to respective timing components; triggering one or more alarms based on the attributions of timing to respective timing components; and detecting and mitigating one or more anomalies based on the attributions of timing to respective timing components.

20. An apparatus, comprising:

one or more network interfaces to communicate with a network;

a processor coupled to the network interfaces and configured to execute one or more processes; and

a memory configured to store a process executable by the processor, the process when executed configured to:

monitor timing of navigations and resources of a web page load;

attribute timing of static first-party resources and timing of hypertext transfer protocol (HTTP) redirects to a core frontend timing component;

attribute timing of dynamic first-party resources to a core backend timing component;

attribute timing of content delivery network (CDN) resources to a CDN timing component;

attribute timing of non-CDN third-party resources to a third-party timing component;

attribute timing of network infrastructure connections to a core connections timing component; and

perform one or more actions based on the attributing steps.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2019
From: CATH, ADAM ROSS; BHAT, SWATHI; VIRGIL, MAXWELL TAYLOR; ZAIK, BRIAN ROBERT; ANAND, PUNEET
To: CISCO TECHNOLOGY, INC.
Reel/Frame 048515/0205 →
Cited By (1)
US 12,701,156