IP Library Granted Patent US 8,312,172
Granted Patent B2
US 8,312,172 · App. 11/439,068 · Granted Nov 13, 2012

Method and system for delta compression

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 8,312,172
App. No.
11/439,068
Granted
Nov 13, 2012
Kind
B2
Abstract

A method and system for providing delta compression, the method includes receiving request data from a user agent, communicating with a content server, wherein the communication includes transmitting the request data to the content server and receiving response data associated with the request data, generating key data associated with the response data, wherein the generated key data represents block data of the response data, storing the generated key data and the block data, and transmitting the block data to the user agent.

Claims (49)

1. A method comprising:

receiving at an optimization server a request for content data along with stored keys from a client terminal having a user agent, wherein the content data corresponds to one or more stored blocks being represented by stored keys that are generated using a first block encoding method, each stored key representing a stored block at the client terminal, and wherein the stored keys are provided based on a key lookup using the request;

communicating with a content server, wherein the communication includes transmitting the request to the content server and receiving the content data;

breaking the content data into one or more new blocks;

generating new keys representing the one or more new blocks using a second block encoding method that is similar to the first block encoding method, wherein each new block is represented by a new key;

comparing the new keys with the stored keys for determining matching and non-matching keys;

storing the determined matching keys in a match list;

storing one or more new blocks corresponding to the determined non-matching keys in a no-match list; and

transmitting to the client terminal the determined matching keys stored in the match list and the one or more new blocks stored in the no-match list, wherein the one or more new blocks and stored blocks corresponding to the determined matching keys are organized before being submitted to the user agent.

2. The method of claim 1 , wherein receiving the request from the user agent includes performing a key lookup for the request to determine if one or more of the stored keys exist.

3. The method of claim 1 , further comprising:

performing a block data lookup by retrieving stored blocks that correspond to the matching keys;

providing, to the user agent, the transmitted one or more new blocks and the stored blocks that correspond to the matching keys.

4. A method comprising:

receiving at a client terminal request data from a user agent;

performing a key lookup based on the request data;

providing first key data based on the key lookup, wherein the first key data is generated using a first block encoding method and represents stored block data corresponding to the requested content data;

communicating with an optimization server, wherein the communicating includes transmitting the request data to the optimization server and receiving response data associated with the request data;

receiving optimized data from the optimization server, wherein the optimized data is generated by breaking received response data into one or more new blocks, generating second key data representing the one or more new blocks using a second block encoding method that is similar to the first block encoding method, comparing the second key data with the first key data for determining matching and non-matching keys, storing the determined matching keys in a match list, storing one or more new blocks corresponding to the determined non-matching keys in a no-match list, and including into the optimized data the determined matching keys stored in the match list and the one or more new blocks stored in the no-match list

providing a buffer with stored block data corresponding to the determined matching keys included in the optimized data; and

transmitting the buffered block data to the user agent.

5. The method of claim 4 , wherein providing block data to the buffer includes providing stored block data.

6. The method of claim 4 , wherein providing block data to the buffer includes providing second block data associated with the second key data if the second key data does not match the first key data.

7. A system comprising:

a client terminal configured to receive a first request data from a user agent, perform a first key data lookup that determines whether any first key data relating to the first request data exists, and transmit second request data that includes the first request data and the existing first key data, wherein the first key data is generated using a first block encoding method and represent stored bock data at the client terminal; and

a server configured to receive the second request data, determine whether the second request data includes the existing first key data, forward the second request data to a content server based on the determination, receive response data that is associated with the second request data, break the response data into one or more new blocks, generate second key data representing the one or more new blocks using a second block encoding method that is similar to the first block encoding method, compare the second key data with the existing first key data for determining matching and non-matching keys, store the determined matching keys in a match list, store new blocks corresponding to the determined non-matching keys in a no-match list, and transmit optimized data to the client terminal, wherein the optimized data includes the matching keys stored in the match list and the new blocks stored in the no-match list, and

wherein the client terminal receives the optimized data, organizes block data corresponding to the matching keys included in the optimized data and the new blocks included in the optimized data, and transmits to the user agent the organized block data.

8. A non-transitory computer-readable storage medium including instructions that, when executed, causes a computer processor to perform a method for data compression, the method comprising:

receiving at a client terminal a first request data from a user agent;

performing a key lookup for the first request data to determine if any first key data exists, wherein the first key data is generated using a first block encoding method and represents stored block data corresponding to the requested content data;

transmitting a second request data that includes the first request data and the existing first key data;

receiving optimized data that is associated with the second request data, wherein the optimized data provides block data corresponding to the second request data, and wherein the optimized data is generated by breaking received response data into one or more new blocks, generating second key data representing the one or more new blocks using a second block encoding method that is similar to the first block encoding method, comparing the second key data with the first key data for determining matching and non-matching keys, storing the determined matching keys in a match list, storing new blocks corresponding to the determined non-matching keys in a no-match list, and including into the optimized data the determined matching keys stored in the match list and the one or more new blocks stored in the no-match list;

organizing stored block data corresponding to the matching keys included in the optimized data and the new blocks included in the optimized data; and

transmitting the organized block data to the user agent.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the optimized data includes first key data referencing stored block data and the buffered block data includes the stored block data.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the optimized data includes non-matching block data and the buffered block data includes the non-matching block data.

11. A non-transitory computer-readable storage medium including instructions that, when executed, causes a computer processor to perform a method for data compression, the method comprising:

receiving at an optimization server request data from a client device having a user agent;

determining whether the request data includes first key data, wherein the first key data is generated using a first block encoding method and represents blocks of data, stored on the client device, corresponding to requested content data, and wherein the first key data is provided based on a key lookup at the client device using the request data;

forwarding the request data to a content server based on the determination;

receiving response data that is associated with the request data;

breaking the response data into one or more new blocks;

generating second key data representing the one or more new blocks using a second block encoding method that is similar to the first block encoding method;

comparing the second key data with the first key data for determining matching and non-matching keys;

storing the determined matching keys to a match list;

storing one or more new blocks corresponding to the non-matching keys to a no-match list; and

transmitting to the client device the determined matching keys stored in the match list and the one or more new blocks stored in the no-match list, wherein the one or more new blocks and stored blocks of data corresponding to the determined matching keys are organized before being submitted to the user agent.

12. The non-transitory computer-readable storage medium of claim 11 , wherein forwarding the request data includes extracting the first key data from the request data and forwarding the resultant request data to the content server when the request data includes first key data.

13. The non-transitory computer-readable storage medium of claim 11 further comprising comparing the first key data with the second key data when the request data includes the first key data.

Assignments (18)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2022
From: BYTEMOBILE INNOVATIONS, LLC
To: CITRIX SYSTEMS, INC.
Reel/Frame 059894/0655 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2022
From: CITRIX SYSTEMS, INC.
To: BYTEMOBILE INNOVATIONS, LLC
Reel/Frame 059087/0052 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2015
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 037289/0606 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2015
From: CITRIX SYSTEMS, INC.
To: BYTEMOBILE, INC.
Reel/Frame 035440/0599 →
RELEASE OF SECURITY INTEREST Recorded Feb 20, 2015
From: PARTNERS FOR GROWTH III, L.P.
To: BYTEMOBILE, INC.
Reel/Frame 034991/0891 →
NUNC PRO TUNC ASSIGNMENT Recorded Dec 6, 2013
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 031730/0322 →
THIS SUBMISSION IS TO CORRECT THE SPELLING OF THE RECEIVING PARTY (ASSIGNEE)'S STREET NAME IN THE ORIGINAL COVER SHEET RECORDED AT REEL/FRAME 030609/0389. THE ADDRESS NAME SHOULD BE WEST CYPRESS CREEK ROAD. Recorded Sep 17, 2013
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 031287/0874 →
MERGER Recorded Jun 13, 2013
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 030609/0389 →
SECURITY AGREEMENT Recorded Dec 22, 2011
From: BYTEMOBILE, INC.
To: PARTNERS FOR GROWTH III, L.P.
Reel/Frame 027438/0616 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2006
From: STAVRAKOS, NICHOLAS; MONKS, JEFF; KOOPMANS, FRED; KOOPMANS, CHRIS; DAKHANE, KAPIL
To: BYTEMOBILE, INC.
Reel/Frame 018041/0091 →