IP Library Granted Patent US 11,647,096
Granted Patent B2
US 11,647,096 · App. 17/504,957 · Granted May 9, 2023

Method and apparatus for automatically optimizing the loading of images in a cloud-based proxy service

Inventors: Christopher Stephen Joel (Oakland, CA); Lee Hahn Holloway (Santa Cruz, CA); Dane Orion Knecht (San Francisco, CA); Albertus Strasheim (San Francisco, CA)
Assignee: CLOUDFLARE, INC.
H04L67/565G06F16/95G06F16/9574G06F40/151G06F40/166H04L67/01H04L67/02H04L67/566
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,647,096
App. No.
17/504,957
Granted
May 9, 2023
Kind
B2
Abstract

A request for a web page is received at a proxy server. The request originates from a client network application of a client device. The requested web page includes multiple references to multiple images. The proxy server retrieves the requested web page. The proxy server modifies code of the retrieved web page such that the client network application will not, for each one of those images, initially request those images when parsing the page. The proxy server also adds code to the retrieved web page that, when executed by the client network application, causes at least two of the images to be requested with a single request. The proxy server transmits the modified web page to the client device.

Claims (71)

1. A method for automatically optimizing loading of images of a web page on a client device, the method comprising:

receiving a response to a request for the web page, wherein the web page includes a plurality of neutralized image tags such that the client device does not request corresponding images when parsing the web page;

determining that the client device is connecting through a mobile operator network;

responsive to determining that the client device is connecting through the mobile operator network, for each image corresponding to each neutralized image tag, determining whether the image is likely to be available in a cache in a non-degraded form;

for a first image that is not likely to be available in the cache, determining whether there is a degraded version of the first image in a storage location locally available on the client device; and

responsive to determining that there is not the degraded version of the first image in the storage location locally available on the client device, requesting the degraded version of the first image in a bulk request via a proxy server;

receiving the degraded version of the first image;

assigning the degraded version of the first image to a first neutralized image tag corresponding to the first image; and

performing deferred image loading.

2. The method of claim 1 , further comprising:

for a second image that is likely to be available in the cache in the non-degraded form, removing the second image from a list of images to be preloaded in a degraded form.

3. The method of claim 1 , wherein the bulk request is a single canonical URL that includes URLs of the first image and other images included in the bulk request.

4. The method of claim 1 , wherein determining whether the image is likely to be available in the cache comprises:

accessing a cache manifest; and

determining whether the image is represented on the cache manifest.

5. The method of claim 1 , wherein assigning the degraded version of the first image to the first neutralized image tag corresponding to the first image comprises:

determining that an onload event has not fired, the onload event including an execution of a client-side script.

6. The method of claim 1 , wherein performing the deferred image loading comprises:

requesting the first image in the non-degraded form when an image placeholder corresponding to the first image is in a viewport of the client device;

receiving the first image in the non-degraded form; and

displaying the received first image in the non-degraded form.

7. The method of claim 1 , wherein receiving the degraded version of the first image comprises:

receiving binary data representing the degraded version of the first image; and

parsing the binary data using a client-side script type container.

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

receiving a response to a request for a web page, wherein the web page includes a plurality of neutralized image tags such that a client device does not request corresponding images when parsing the web page;

determining that the client device is connecting through a mobile operator network;

responsive to determining that the client device is connecting through the mobile operator network, for each image corresponding to each neutralized image tag, determining whether the image is likely to be available in a cache in a non-degraded form;

for a first image that is not likely to be available in the cache, determining whether there is a degraded version of the first image in a storage location locally available on the client device; and

responsive to determining that there is not the degraded version of the first image in the storage location locally available on the client device, requesting the degraded version of the first image in a bulk request via a proxy server;

receiving the degraded version of the first image;

assigning the degraded version of the first image to a first neutralized image tag corresponding to the first image; and

performing deferred image loading.

9. The non-transitory machine-readable storage medium of claim 8 , further comprising:

for a second image that is likely to be available in the cache in the non-degraded form, removing the second image from a list of images to be preloaded in a degraded form.

10. The non-transitory machine-readable storage medium of claim 8 , wherein the bulk request is a single canonical URL that includes URLs of the first image and other images included in the bulk request.

11. The non-transitory machine-readable storage medium of claim 8 , wherein determining whether the image is likely to be available in the cache comprises:

accessing a cache manifest; and

determining whether the image is represented on the cache manifest.

12. The non-transitory machine-readable storage medium of claim 8 , wherein assigning the degraded version of the first image to the first neutralized image tag corresponding to the first image comprises:

determining that an onload event has not fired, the onload event including an execution of a client-side script.

13. The non-transitory machine-readable storage medium of claim 8 , wherein performing the deferred image loading comprises:

requesting the first image in the non-degraded form when an image placeholder corresponding to the first image is in a viewport of the client device;

receiving the first image in the non-degraded form; and

displaying the received first image in the non-degraded form.

14. The non-transitory machine-readable storage medium of claim 8 , wherein receiving the degraded version of the first image comprises:

receiving binary data representing the degraded version of the first image; and

parsing the binary data using a client-side script type container.

15. An apparatus, comprising:

a processor;

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

receive a response to a request for a web page, wherein the web page includes a plurality of neutralized image tags such that a client device does not request corresponding images when parsing the web page;

determine that the client device is connecting through a mobile operator network;

responsive to determining that the client device is connecting through the mobile operator network, for each image corresponding to each neutralized image tag, determine whether the image is likely to be available in a cache in a non-degraded form;

for a first image that is not likely to be available in the cache, determine whether there is a degraded version of the first image in a storage location locally available on the client device; and

responsive to determining that there is not the degraded version of the first image in the storage location locally available on the client device, request the degraded version of the first image in a bulk request via a proxy server;

receive the degraded version of the first image;

assign the degraded version of the first image to a first neutralized image tag corresponding to the first image; and

perform deferred image loading.

16. The apparatus of claim 15 , wherein the instructions further cause said processor to perform the following:

for a second image that is likely to be available in the cache in the non-degraded form, remove the second image from a list of images to be preloaded in a degraded form.

17. The apparatus of claim 15 , wherein the bulk request is a single canonical URL that includes URLs of the first image and other images included in the bulk request.

18. The apparatus of claim 15 , wherein determining whether the image is likely to be available in the cache further causes said processor to perform the following:

access a cache manifest; and

determine whether the image is represented on the cache manifest.

19. The apparatus of claim 15 , wherein assigning the degraded version of the first image to the first neutralized image tag corresponding to the first image further causes said processor to perform the following:

determine that an onload event has not fired, the onload event including an execution of a client-side script.

20. The apparatus of claim 15 , wherein performing the deferred image loading further causes said processor to perform the following:

request the first image in the non-degraded form when an image placeholder corresponding to the first image is in a viewport of the client device;

receive the first image in the non-degraded form; and

display the received first image in the non-degraded form.

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 Oct 20, 2021
From: JOEL, CHRISTOPHER STEPHEN; HOLLOWAY, LEE HAHN; KNECHT, DANE ORION; STRASHEIM, ALBERTUS
To: CLOUDFLARE, INC.
Reel/Frame 057852/0131 →
Continuity (4)
Continuation 16357766 · Mar 19, 2019
Continuation 14818277 · Aug 4, 2015
Continuation 13894839 · May 15, 2013
Related Publication 20220038550A1 · Feb 3, 2022