IP Library Granted Patent US 10,798,203
Granted Patent B2
US 10,798,203 · App. 16/443,747 · Granted Oct 6, 2020

Method and apparatus for reducing network resource transmission size using delta compression

Inventor: John Graham-Cumming (London, GB)
Assignee: CLOUDFLARE, INC.
H04L67/2828H04L29/08783H04L67/1023H04L67/2842H04L67/2876H04L69/02H04L69/04
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,798,203
App. No.
16/443,747
Granted
Oct 6, 2020
Kind
B2
Abstract

A method and computing device for delta compression techniques for reducing network resource transmission size are described. A first request for a network resource is received. The requested network resource is retrieved. A first response including the network resource is transmitted to the near end network optimizer. The retrieved network resource is stored as a first version of the network resource regardless of a directive that a cached version of the network resource is not to be used to respond to future HTTP requests for that network resource without successful revalidation with an origin server. A second request for the network resource is received. A most current version of the network resource is retrieved. A set of differences between the first version and the most current version of the network resource are determined. The set of differences are transmitted to the near end network optimizer.

Claims (44)

1. A method, in a far end network optimizer of a proxy server, of supporting a delta compression technique for reducing network resource transmission size, the method comprising:

receiving, from a near end network optimizer, a first HyperText Transfer Protocol (HTTP) request for a network resource on behalf of a client device;

in response to receiving the first HTTP request,

retrieving the requested network resource from an origin server that hosts the network resource,

transmitting, to the near end network optimizer, a first HTTP response including the retrieved network resource, and

storing the retrieved network resource as a first version of the requested network resource, regardless of a directive associated with the network resource that a cached version of the network resource is not to be used to respond to a future HTTP request for that network resource without successful revalidation with the origin server;

receiving, from the near end network optimizer, a second HTTP request for the network resource on behalf of the client device; and

in response to receiving the second HTTP request for the network resource,

retrieving a most current version of the network resource from the origin server,

transmitting, to the near end network optimizer, a second HTTP response including a set of one or more differences between the first version and the most current version of the network resource without transmitting the entire network resource, wherein transmitting the second HTTP response causes the near end network optimizer to transmit to the client device an updated version of the network resource that is generated by applying the set of differences to the first version of the network resource.

2. The method of claim 1 , further comprising:

storing, in the far end network optimizer, a first version identifier identifying the first version of the network resource.

3. The method of claim 2 , wherein the retrieving the requested network resource from the origin server includes:

transmitting, to the origin server, a third HTTP request for the network resource; and

receiving, from the origin server, a third HTTP response including the first version of the network resource and the first version identifier, wherein the first version identifier is set by the origin server.

4. The method of claim 3 , wherein the first version identifier is a value of a last modified header or a value of an HTTP entity tag (ETag) header field.

5. The method of claim 2 , further comprising:

generating the first version identifier by hashing the first version of the network resource.

6. The method of claim 2 , wherein the first version of the network resource and the first version identifier associated with the first version of the network resource are stored in a dynamic dictionary of the far end network optimizer.

7. The method of claim 2 , wherein the first HTTP response includes the first version identifier.

8. The method of claim 7 , wherein the second HTTP request for the network resource includes the first version identifier associated with the first version of the network resource.

9. The method of claim 1 , wherein the second HTTP response further includes an indication that the second HTTP response contains the set of differences between versions and not the entire network resource.

10. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor of a proxy server including a far end network optimizer for supporting a delta compression technique for reducing network resource transmission size, cause said processor to perform operations comprising:

receiving, from a near end network optimizer, a first HyperText Transfer Protocol (HTTP) request for a network resource on behalf of a client device;

in response to receiving the first HTTP request,

retrieving the requested network resource from an origin server that hosts the network resource,

transmitting, to the near end network optimizer, a first HTTP response including the retrieved network resource, and

storing the retrieved network resource as a first version of the requested network resource, regardless of a directive associated with the network resource that a cached version of the network resource is not to be used to respond to a future HTTP request for that network resource without successful revalidation with the origin server;

receiving, from the near end network optimizer, a second HTTP request for the network resource on behalf of the client device; and

in response to receiving the second HTTP request for the network resource,

retrieving a most current version of the network resource from the origin server,

transmitting, to the near end network optimizer, a second HTTP response including a set of one or more differences between the first version and the most current version of the network resource without transmitting the entire network resource, wherein transmitting the second HTTP response causes the near end network optimizer to transmit to the client device an updated version of the network resource that is generated by applying the set of differences to the first version of the network resource.

11. The non-transitory machine-readable storage medium of claim 10 , further comprising:

storing, in the far end network optimizer, a first version identifier identifying the first version of the network resource.

12. The non-transitory machine-readable storage medium of claim 11 , wherein the retrieving the requested network resource from the origin server includes:

transmitting, to the origin server, a third HTTP request for the network resource; and

receiving, from the origin server, a third HTTP response including the first version of the network resource and the first version identifier, wherein the first version identifier is set by the origin server.

13. The non-transitory machine-readable storage medium of claim 12 , wherein the first version identifier is a value of a last modified header or a value of an HTTP entity tag (ETag) header field.

14. The non-transitory machine-readable storage medium of claim 11 , further comprising:

generating the first version identifier by hashing the first version of the network resource.

15. The non-transitory machine-readable storage medium of claim 11 , wherein the first version of the network resource and the first version identifier associated with the first version of the network resource are stored in a dynamic dictionary of the far end network optimizer.

16. The non-transitory machine-readable storage medium of claim 11 , wherein the first HTTP response includes the first version identifier.

17. The non-transitory machine-readable storage medium of claim 16 , wherein the second HTTP request for the network resource includes the first version identifier associated with the first version of the network resource.

18. The non-transitory machine-readable storage medium of claim 10 , wherein the second HTTP response further includes an indication that the second HTTP response contains the set of differences between versions and not the entire network resource.

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 Jun 18, 2019
From: GRAHAM-CUMMING, JOHN
To: CLOUDFLARE, INC.
Reel/Frame 049508/0591 →
Continuity (6)
Continuation 16172651 · Oct 26, 2018
Continuation 16002401 · Jun 7, 2018
Continuation 15656928 · Jul 21, 2017
Continuation 14659909 · Mar 17, 2015
Continuation 13440658 · Apr 5, 2012
Related Publication 20190306263A1 · Oct 3, 2019