IP Library Granted Patent US 10,142,434
Granted Patent B2
US 10,142,434 · App. 16/002,401 · Granted Nov 27, 2018

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,142,434
App. No.
16/002,401
Granted
Nov 27, 2018
Kind
B2
Abstract

A network optimizer receives, from a client device, a request for a network resource including a first version identifier identifying a first version of the network resource. A request for the network resource is transmitted to a far end network optimizer with a second version identifier that identifies a second version of the network resource. The network optimizer receives, from the far end network optimizer, a response that includes a first differences file that specifies first difference(s) between the second version with a most current version of the network resource. The response does not include the entire network resource. The network optimizer transmits to the client device a second response including a second differences file that identifies differences between the most current version of the network resource and the first version of the network resource causing the generation of an updated version of the network resource at the client device.

Claims (56)

1. A method, in a network optimizer of a proxy server, of supporting a delta compression technique for reducing network resource transmission size between a near end network optimizer of a client device and a far end network optimizer, wherein the far end network optimizer is coupled with an origin server hosting network resources, the method comprising:

receiving from the client device a first request for a network resource, the first request including a first version identifier that identifies a first version of the network resource stored in the near end network optimizer of the client device;

responsive to determining that the network optimizer of the proxy server has access to the first version of the network resource as identified with the first version identifier, transmitting a second request to the far end network optimizer, the second request including a second version identifier of the network resource identifying a second version of the network resource stored in the network optimizer of the proxy server;

receiving a first response from the far end network optimizer, the first response including a first differences file that specifies a first set of one or more differences between the second version of the network resource with a most current version of the network resource received at the far end network optimizer from the origin server, wherein the first response does not include the entire network resource; and

transmitting to the client device a second response including a second differences file that identifies a second set of one or more differences between the most current version of the network resource and the first version of the network resource identified in the first request, wherein the second response does not include the entire network resource and causes the near end network optimizer of the client device to generate an updated version of the network resource.

2. The method of claim 1 , wherein the second identifier included in the second request is the first version identifier included in the first request, and the second set of differences is the first set of differences.

3. The method of claim 1 , wherein causing the near end network optimizer of the client device to generate an updated version of the network resource includes causing the near end network optimizer to apply the second set of differences specified in the second differences file to the first version of the network resource stored in the near end network optimizer.

4. The method of claim 1 , wherein the second identifier included in the second request is different than the first identifier, and the method further comprises prior to transmitting the second response:

applying the first set of differences to the second version of the network resource to generate an updated version of the network resource; and

determining the second set of differences between the updated version of the network resource and the first version of the network resource identified in the first request.

5. The method of claim 4 , further comprising:

storing the updated version of the network resource in the network optimizer of the proxy server as a third version of the network resource.

6. The method of claim 5 , further comprising:

storing a third version identifier associated with the third version of the network resource in the network optimizer of the proxy server.

7. The method of claim 6 , wherein the third version identifier is included in the first response received from the far end network optimizer.

8. The method of claim 6 , wherein prior to storing the third version identifier associated with the third version of the network resource, generating the third version identifier by hashing the third version of the network resource.

9. The method of claim 6 , wherein the third version of the network resource and the third version identifier are stored in a dynamic dictionary of the network optimizer of the proxy server.

10. The method of claim 9 , wherein the dynamic dictionary of the network optimizer of the proxy server is built as resources are received from the far end network optimizer.

11. A proxy server including a network optimizer for supporting a delta compression technique for reducing network resource transmission size between a near end network optimizer of a client device and a far end network optimizer of, wherein the far end network optimizer is coupled with an origin server hosting network resources, the proxy server including:

a set of one or more processors;

a set of one or more non-transitory computer-readable storage mediums storing instructions, that when executed by the set of processors, cause the set of processors to perform the following operations:

receiving from the client device a first request for a network resource, the first request including a first version identifier that identifies a first version of the network resource stored in the near end network optimizer of the client device;

responsive to determining that the network optimizer of the proxy server has access to the first version of the network resource as identified with the first version identifier, transmitting a second request to the far end network optimizer, the second request including a second version identifier of the network resource identifying a second version of the network resource stored in the network optimizer of the proxy server;

receiving a first response from the far end network optimizer, the first response including a first differences file that specifies a first set of one or more differences between the second version of the network resource with a most current version of the network resource received at the far end network optimizer from the origin server hosting the network resource, wherein the first response does not include the entire network resource; and

transmitting to the client device a second response including a second differences file that identifies a second set of one or more differences between the most current version of the network resource and the first version of the network resource identified in the first request, wherein the second response does not include the entire network resource and causes the near end network optimizer of the client device to generate an updated version of the network resource.

12. The proxy server of claim 11 , wherein the second identifier included in the second request is the first version identifier included in the first request, and the second set of differences is the first set of differences.

13. The proxy server of claim 11 , wherein causing the near end network optimizer of the client device to generate an updated version of the network resource includes causing the near end network optimizer to apply the second set of differences specified in the second differences file to the first version of the network resource stored in the near end network optimizer.

14. The proxy server of claim 11 , wherein the second identifier included in the second request is different than the first identifier, and the operations further comprise prior to transmitting the second response:

applying the first set of differences to the second version of the network resource to generate an updated version of the network resource; and

determining the second set of differences between the updated version of the network resource and the first version of the network resource identified in the first request.

15. The proxy server of claim 14 , wherein the operations further comprise:

storing the updated version of the network resource in the network optimizer of the proxy server as a third version of the network resource.

16. The proxy server of claim 15 , wherein the operations further comprise:

storing a third version identifier associated with the third version of the network resource in the network optimizer of the proxy server.

17. The proxy server of claim 16 , wherein the third version identifier is included in the first response received from the far end network optimizer.

18. The proxy server of claim 16 , wherein prior to storing the third version identifier associated with the third version of the network resource, generating the third version identifier by hashing the third version of the network resource.

19. The proxy server of claim 16 , wherein the third version of the network resource and the third version identifier are stored in a dynamic dictionary of the network optimizer of the proxy server.

20. The proxy server of claim 19 , wherein the dynamic dictionary of the network optimizer of the proxy server is built as resources are received from the far end network optimizer.

21. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor of a network optimizer of a proxy server for supporting a delta compression technique for reducing network resource transmission size between a near end network optimizer of a client device and a far end network optimizer of, wherein the far end network optimizer is coupled with an origin server hosting network resources, cause said processor to perform operations comprising:

receiving from the client device a first request for a network resource, the first request including a first version identifier that identifies a first version of the network resource stored in the near end network optimizer of the client device;

responsive to determining that the network optimizer of the proxy server has access to the first version of the network resource as identified with the first version identifier, transmitting a second request to the far end network optimizer, the second request including a second version identifier of the network resource identifying a second version of the network resource stored in the network optimizer of the proxy server;

receiving a first response from the far end network optimizer, the first response including a first differences file that specifies a first set of one or more differences between the second version of the network resource with a most current version of the network resource received at the far end network optimizer from the origin server hosting the network resource, wherein the first response does not include the entire network resource; and

transmitting to the client device a second response including a second differences file that identifies a second set of one or more differences between the most current version of the network resource and the first version of the network resource identified in the first request, wherein the second response does not include the entire network resource and causes the near end network optimizer of the client device to generate an updated version of the network resource.

22. The non-transitory machine-readable storage medium of claim 21 , wherein the second identifier included in the second request is the first version identifier included in the first request, and the second set of differences is the first set of differences.

23. The non-transitory machine-readable storage medium of claim 21 , wherein causing the near end network optimizer of the client device to generate an updated version of the network resource includes causing the near end network optimizer to apply the second set of differences specified in the second differences file to the first version of the network resource stored in the near end network optimizer.

24. The non-transitory machine-readable storage medium of claim 21 , wherein the second identifier included in the second request is different than the first identifier, and the operations further comprise prior to transmitting the second response:

applying the first set of differences to the second version of the network resource to generate an updated version of the network resource; and

determining the second set of differences between the updated version of the network resource and the first version of the network resource identified in the first request.

25. The non-transitory machine-readable storage medium of claim 24 , wherein the operations further comprise:

storing the updated version of the network resource in the network optimizer of the proxy server as a third version of the network resource.

26. The non-transitory machine-readable storage medium of claim 25 , wherein the operations further comprise:

storing a third version identifier associated with the third version of the network resource in the network optimizer of the proxy server.

27. The non-transitory machine-readable storage medium of claim 26 , wherein the third version identifier is included in the first response received from the far end network optimizer.

28. The non-transitory machine-readable storage medium of claim 26 , wherein prior to storing the third version identifier associated with the third version of the network resource, generating the third version identifier by hashing the third version of the network resource.

29. The non-transitory machine-readable storage medium of claim 26 , wherein the third version of the network resource and the third version identifier are stored in a dynamic dictionary of the network optimizer of the proxy server.

30. The non-transitory machine-readable storage medium of claim 29 , wherein the dynamic dictionary of the network optimizer of the proxy server is built as resources are received from the far end network optimizer.

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 19, 2018
From: GRAHAM-CUMMING, JOHN
To: CLOUDFLARE, INC.
Reel/Frame 046135/0123 →
Continuity (4)
Continuation 15656928 · Jul 21, 2017
Continuation 14659909 · Mar 17, 2015
Continuation 13440658 · Apr 5, 2012
Related Publication 20180288183A1 · Oct 4, 2018