IP Library Granted Patent US 9,342,620
Granted Patent B2
US 9,342,620 · App. 13/648,203 · Granted May 17, 2016

Loading of web resources

Inventors: Christopher Stephen Joel (San Francisco, CA); Jason Thomas Walter Benterou (Burlingame, CA); Lee Hahn Holloway (Santa Cruz, CA); Matthew Browning Prince (San Francisco, CA); Ian Gerald Pye (Santa Cruz, CA)
Assignee: CLOUDFLARE, INC.
G06F17/30905
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 9,342,620
App. No.
13/648,203
Granted
May 17, 2016
Kind
B2
Abstract

A method and apparatus for improving loading of web resources. A server receives a request for a Hypertext Markup Language (HTML) document requested by a client network application. The server retrieves the requested document. The server automatically modifies objects referenced in the HTML document that have an external source such that loading of those objects by the client network application will be deferred. The server inserts a client-side script loader or a reference to the client-side script loader into the HTML document. The client-side script loader is configured to, when executed by the client network application, attempt to load the objects that have been deferred. The server transmits the modified HTML document to the client network application.

Claims (70)

1. A method in a server for improving loading of web resources, the method comprising:

receiving a first request from a client network application for a Hypertext Markup Language (HTML) document, wherein the first request identifies a first domain that hosts the HTML document;

retrieving the requested HTML document, wherein the retrieved HTML document includes,

a first reference to a first object that is located at a second domain, and

a second reference to a second object that is located at a third domain;

modifying the HTML document including inserting a client-side script loader or a reference to the client-side script loader into the HTML document, wherein the client-side script loader is configured to, when executed by the client network application, perform the following:

initiate a single Transmission Control Protocol (TCP) connection with the server, and

transmit a single second request to the server over the single TCP connection for the first object and the second object; and

transmitting the modified HTML document to the client network application.

2. The method of claim 1 , further comprising:

receiving the single second request over the single TCP connection from the client network application;

retrieving the first object and the second object; and

transmitting the first object and the second object to the client network application in a single first response over the single TCP connection.

3. The method of claim 2 , wherein the first object and the second object are included in the single first response and transmitted to the client network application as they are retrieved regardless of an order in which they are retrieved.

4. The method of claim 2 , wherein retrieving the first object includes determining that the first object is in cache and has not expired and retrieving the first object from the cache.

5. The method of claim 2 , wherein retrieving the second object includes,

determining that the second object is not in cache or is in cache but expired;

transmitting a third request to an origin server that hosts the first object; and

receiving a second response from the origin server that includes the first object.

6. The method of claim 1 , wherein prior to transmitting the modified HTML document to the client network application, automatically modifying the first reference and the second reference such that the client network application will not request the first object and the second object respectively until the client network application executes the client-side script loader.

7. The method of claim 6 , wherein the client-side script loader is configured to be executed by the client network application only after the client network application has completed loading the rest of the HTML document.

8. The method of claim 1 , wherein the first request and the single second request are received at the server as a result of a Domain Name System (DNS) request for the first domain, second domain, and third domain resolving to an IP address of the server.

9. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor of a server, cause said processor to perform operations comprising:

receiving a first request from a client network application for a Hypertext Markup Language (HTML) document, wherein the first request identifies a first domain that hosts the HTML document;

retrieving the requested HTML document, wherein the retrieved HTML document includes,

a first reference to a first object that is located at a second domain, and

a second reference to a second object that is located at a third domain;

modifying the HTML document including inserting a client-side script loader or a reference to the client-side script loader into the HTML document, wherein the client-side script loader is configured to, when executed by the client network application, perform the following:

initiate a single Transmission Control Protocol (TCP) connection with the server, and

transmit a single second request to the server over the single TCP connection for the first object and the second object; and

transmitting the modified HTML document to the client network application.

10. The non-transitory machine-readable storage medium of claim 9 , wherein the non-transitory machine-readable storage medium further provides instructions that, when executed by the processor of the server, cause said processor to perform operations comprising:

receiving the single second request over the single TCP connection from the client network application;

retrieving the single object and the second object; and

transmitting the first object and the second object to the client network application in a single first response over the single TCP connection.

11. The non-transitory machine-readable storage medium of claim 10 , wherein the first object and the second object are included in the single first response and transmitted to the client network application as they are retrieved regardless of an order in which they are retrieved.

12. The non-transitory machine-readable storage medium of claim 10 , wherein retrieving the first object includes determining that the first object is in cache and has not expired and retrieving the first object from the cache.

13. The non-transitory machine-readable storage medium of claim 10 , wherein retrieving the second object includes,

determining that the second object is not in cache or is in cache but expired;

transmitting a third request to an origin server that hosts the first object; and

receiving a second response from the origin server that includes the first object.

14. The non-transitory machine-readable storage medium of claim 9 , wherein prior to transmitting the modified HTML document to the client network application, automatically modifying the first reference and the second reference such that the client network application will not request the first object and the second object respectively until the client network application executes the client-side script loader.

15. The non-transitory machine-readable storage medium of claim 14 , wherein the client-side script loader is configured to be executed by the client network application only after the client network application has completed loading the rest of the HTML document.

16. The non-transitory machine-readable storage medium of claim 9 , wherein the first request and the single second request are received at the server as a result of a Domain Name System (DNS) request for the first domain, second domain, and third domain resolving to an IP address of the server.

17. A server for improving loading of a web page, the server comprising

a processor; and

a non-transitory machine-readable storage medium configured to store instructions that, when executed by the processor, cause said processor to perform the following:

receive a first request from a client network application for a Hypertext Markup Language (HTML) document, wherein the first request identifies a first domain that hosts the HTML document;

retrieve the requested HTML document, wherein the retrieved HTML document includes,

a first reference to a first object that is located at a second domain, and

a second reference to a second object that is located at a third domain;

modify the HTML document including an insertion of a client-side script loader or a reference to the client-side script loader into the HTML document, wherein the client-side script loader is configured to, when executed by the client network application, perform the following:

initiate a single Transmission Control Protocol (TCP) connection with the server, and

transmit a single second request to the server over the single TCP connection for the first object and the second object; and

transmit the modified HTML document to the client network application.

18. The server of claim 17 , wherein the non-transitory machine-readable storage medium further is configured to store instructions that, when executed by the processor of the server, cause said processor to perform the following:

receive the single second request over the single TCP connection from the client network application;

retrieve the first object and the second object; and

transmit the first object and the second object to the client network application in a single first response over the single TCP connection.

19. The server of claim 18 , wherein the first object and the second object are included in the single first response and are to be transmitted to the client network application as they are retrieved regardless of an order in which they are retrieved.

20. The server of claim 18 , wherein retrieval of the first object includes the following operations to be performed,

determine that the first object is in cache and has not expired, and

retrieve the first object from the cache.

21. The server of claim 18 , wherein retrieval of the second object includes the following operations to be performed,

determine that the second object is not in cache or is in cache but expired;

transmit a third request to an origin server that hosts the first object; and

receive a second response from the origin server that includes the first object.

22. The server of claim 17 , wherein prior to transmitting the modified HTML document to the client network application, automatically modify the first reference and the second reference such that the client network application will not request the first object and the second object respectively until the client network application executes the client-side script loader.

23. The server of claim 22 , wherein the client-side script loader is configured to be executed by the client network application only after the client network application has completed loading the rest of the HTML document.

24. The server of claim 17 , wherein the first request and the single second request are received at the server as a result of a Domain Name System (DNS) request for the first domain, second domain, and third domain resolving to an IP address of the server.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2016
From: JOEL, CHRISTOPHER STEPHEN; BENTEROU, JASON THOMAS WALTER; HOLLOWAY, LEE HAHN; PRINCE, MATTHEW BROWNING; PYE, IAN GERALD
To: CLOUDFLARE, INC.
Reel/Frame 038259/0187 →
Continuity (3)
Continuation 13253033 · Oct 4, 2011
Provisional Application 61488699 · May 20, 2011
Related Publication 20130041946A1 · Feb 14, 2013