IP Library Granted Patent US 11,792,294
Granted Patent B2
US 11,792,294 · App. 17/481,222 · Granted Oct 17, 2023

Method and apparatus for reducing loading time of web pages

Inventors: John Graham-Cumming (London, GB); Andrew Galloni (London, GB); Terin Stock (San Francisco, CA)
Assignee: CLOUDFLARE, INC.
H04L67/568H04L67/14H04L67/61H04L67/01H04L67/02
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 11,792,294
App. No.
17/481,222
Granted
Oct 17, 2023
Kind
B2
Abstract

A browser receives a web page that includes a script that is configured to control subsequent requests of the browser for at least the web page and caches a first portion of the web page that includes reference(s) to other web resource(s). A subsequent request for the web page is dispatched to the script which returns the cached first portion of the web page to the browser and a request for the full web page is made. Request(s) are also transmitted for the web resource(s) referenced in the first portion of the web page without waiting for the full web page to be received. When the full web page is received, if the first portion of the page matches the corresponding portion of the full page, that corresponding portion is removed from the full page and the remaining page is returned to the browser.

Claims (77)

1. A method for reducing loading time of a web page, comprising;

receiving a first request for the web page;

retrieving a first version of the web page;

storing a first portion of the first version of the web page in cache, wherein the first portion of the first version of the web page is not the entire first version of the web page;

receiving a second request for the web page, wherein the second request is subsequent to the first request;

returning, from the cache, the first portion of the first version of the web page, wherein the first portion of the first version of the web page includes a set of one or more references to a set of one or more web resources to cause one or more requests for the set of one or more web resources to be made prior to an entirety of the first version of the page being returned;

retrieving the second version of the web page wherein the retrieving the second version of the web page is subsequent to returning the first portion of the first version of the web page;

determining that a first portion of the second version of the web page is the same as the first portion of the first version of the web page; and

returning a second portion of the second version of the web page wherein the second portion of the second version does not include the first portion of the second version.

2. The method of claim 1 , wherein the first portion of the first version of the web page does not include information beyond a closing head tag of the web page.

3. The method of claim 1 , wherein the cache is available to a script that is configured to control subsequent requests for the web page.

4. The method of claim 3 , wherein the script is further configured to control subsequent requests for other web pages of a same domain as the web page.

5. The method of claim 1 , further comprising:

receiving a third request for the web page wherein the third request is subsequent to the first request;

returning, from the cache, the first portion of the first version of the web page;

retrieving a third version of the web page wherein the retrieving the third version of the web page is subsequent to returning the first portion of the first version of the web page;

determining that a first portion of the third version of the web page is not the same as the first portion of the first version of the web page;

causing the first portion of the first version of the web page to be discarded; and

returning the third version of the web page.

6. The method of claim 1 , further comprising:

determining a longest common prefix (LCP) of a plurality of versions of the web page;

wherein the LCP is a portion that is common to all of the plurality of versions of the web page;

wherein the first and second version of the web page are each one of the plurality of versions of the web page; and

wherein the first portion of the first version of the web page is the LCP.

7. The method of claim 1 , wherein the first portion of the first version of the web page also includes an image preloader that is configured to transmit one or more requests for one or more images respectively that were originally referenced in a different portion from the first portion of the first version of the web page.

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

receiving a first request for a web page;

retrieving a first version of the web page;

storing a first portion of the first version of the web page in cache, wherein the first portion of the first version of the web page is not the entire first version of the web page;

receiving a second request for the web page wherein the second request is subsequent to the first request;

returning, from the cache, the first portion of the first version of the web page, wherein the first portion of the first version of the web page includes a set of one or more references to a set of one or more web resources to cause one or more requests for the set of one or more web resources to be made prior to an entirety of the first version of the page being returned;

retrieving the second version of the web page wherein the retrieving the second version of the web page is subsequent to returning the first portion of the first version of the web page;

determining that a first portion of the second version of the web page is the same as the first portion of the first version of the web page; and

returning a second portion of the second version of the web page wherein the second portion of the second version does not include the first portion of the second version.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the first portion of the first version of the web page does not include information beyond a closing head tag of the web page.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the cache is available to a script that is configured to control subsequent requests for the web page.

11. The non-transitory computer-readable storage medium of claim 10 , wherein the script is further configured to control subsequent requests for other web pages of a same domain as the web page.

12. The non-transitory computer-readable storage medium of claim 8 that provides further instructions that, when executed by the processor, cause said processor to perform further operations comprising:

receiving a third request for the web page wherein the third request is subsequent to the first request;

returning, from the cache, the first portion of the first version of the web page;

retrieving a third version of the web page wherein the retrieving the third version of the web page is subsequent to returning the first portion of the first version of the web page;

determining that a first portion of the third version of the web page is not the same as the first portion of the first version of the web page;

causing the first portion of the first version of the web page to be discarded; and

returning the third version of the web page.

13. The non-transitory computer-readable storage medium of claim 8 that provides further instructions that, when executed by the processor, cause said processor to perform further operations comprising:

determining a longest common prefix (LCP) of a plurality of versions of the web page;

wherein the LCP is a portion that is common to all of the plurality of versions of the web page;

wherein the first and second version of the web page are each one of the plurality of versions of the web page; and

wherein the first portion of the first version of the web page is the LCP.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the first portion of the first version of the web page also includes an image preloader that is configured to transmit one or more requests for one or more images respectively that were originally referenced in a different portion from the first portion of the first version of the web page.

15. An apparatus for reducing loading time for a web page comprising:

a processor; and

a non-transitory computer-readable storage medium coupled with the processor that stores instructions that, when executed by the processor, cause said processor to perform the following:

receive a first request for the web page;

retrieve a first version of the web page;

store a first portion of the first version of the web page in cache, wherein the first portion of the first version of the web page is not the entire first version of the web page;

receive a second request for the web page wherein the second request is subsequent to the first request;

return, from the cache, the first portion of the first version of the web page, wherein the first portion of the first version of the web page includes a set of one or more references to a set of one or more web resources to cause one or more requests for the set of one or more web resources to be made prior to an entirety of the first version of the page being returned;

retrieve the second version of the web page wherein the retrieving the second version of the web page is subsequent to returning the first portion of the first version of the web page;

determine that a first portion of the second version of the web page is the same as the first portion of the first version of the web page; and

return a second portion of the second version of the web page wherein the second portion of the second version does not include the first portion of the second version.

16. The apparatus of claim 15 , wherein the first portion of the first version of the web page does not include information beyond a closing head tag of the web page.

17. The apparatus of claim 15 , wherein the cache is available to a script that is configured to control subsequent requests for the web page.

18. The apparatus of claim 15 , wherein the non-transitory computer-readable storage medium stores further instructions that, when executed by the processor, cause said processor to perform the following:

receive a third request for the web page wherein the third request is subsequent to the first request;

return, from the cache, the first portion of the first version of the web page;

retrieve a third version of the web page wherein the retrieving the third version of the web page is subsequent to returning the first portion of the first version of the web page;

determine that a first portion of the third version of the web page is not the same as the first portion of the first version of the web page;

cause the first portion of the first version of the web page to be discarded; and

return the third version of the web page.

19. The apparatus of claim 15 , wherein the non-transitory computer-readable storage medium stores further instructions that, when executed by the processor, cause said processor to perform further the following:

determining a longest common prefix (LCP) of a plurality of versions of the web page;

wherein the LCP is a portion that is common to all of the plurality of versions of the web page;

wherein the first and second version of the web page are each one of the plurality of versions of the web page; and

wherein the first portion of the first version of the web page is the LCP.

20. The apparatus of claim 15 , wherein the first portion of the first version of the web page also includes an image preloader that is configured to transmit one or more requests for one or more images respectively that were originally referenced in a different portion from the first portion of the first version of the web page.

21. The apparatus of claim 17 , wherein the script is further configured to control subsequent requests for other web pages of a same domain as the web page.

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 Sep 21, 2021
From: GRAHAM-CUMMING, JOHN; GALLONI, ANDREW; STOCK, TERIN
To: CLOUDFLARE, INC.
Reel/Frame 057551/0825 →
Continuity (5)
Continuation 16155299 · Oct 9, 2018
Continuation 15811623 · Nov 13, 2017
Continuation 15192803 · Jun 24, 2016
Provisional Application 62185470 · Jun 26, 2015
Related Publication 20220006878A1 · Jan 6, 2022