Method and systems for efficient delivery of previously stored content
First Claim
1. A method for creating efficient updates to a previously stored file, said method comprising:
- (a) receiving, by an appliance intermediary to a client and a server, a first file comprising a first plurality of sequences of data;
(b) receiving, by the appliance, a second file comprising a second plurality of sequences of data;
(c) creating, by a hash engine of the appliance, a hash table having a plurality of entries, each of the plurality of entries corresponding to a respective one of the first plurality of sequences, and wherein at least two of said entries correspond to overlapping sequences of data;
(d) computing, by the hash engine, hash values for said second plurality of sequences of data;
(e) comparing, by the hash engine, each of the second plurality of sequences of data with sequences from the first plurality of sequences having the same hash value to determine a first sequence of data and a second sequence of data present in both the first file and the second file;
(f) storing, by the appliance, representations of lengths and locations of the first sequence of data and the second sequence of data present in both the first and second files; and
(g) creating, by the appliance, a third file comprising sequences of data from the second file and a representation of a location and a length of the first sequence of data, the representation of the location identifying a number of bytes between a last byte of the first sequence of data and a byte preceding a first byte of the second sequence of data, the length identifying a number of matching bytes of the first sequence of data.
8 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for reducing file sizes for files delivered over a network are disclosed. A method comprises receiving a first file comprising sequences of data; creating a hash table having entries corresponding to overlapping sequences of data; receiving a second file comprising sequences of data; comparing each of the sequences of data in the second file to the sequences of data in the hash table to determine sequences of data present in both the first and second files; and creating a third file comprising sequences of data from the second file and representations of locations and lengths of said sequences of data present in both the first and second files.
-
Citations
28 Claims
-
1. A method for creating efficient updates to a previously stored file, said method comprising:
-
(a) receiving, by an appliance intermediary to a client and a server, a first file comprising a first plurality of sequences of data; (b) receiving, by the appliance, a second file comprising a second plurality of sequences of data; (c) creating, by a hash engine of the appliance, a hash table having a plurality of entries, each of the plurality of entries corresponding to a respective one of the first plurality of sequences, and wherein at least two of said entries correspond to overlapping sequences of data; (d) computing, by the hash engine, hash values for said second plurality of sequences of data; (e) comparing, by the hash engine, each of the second plurality of sequences of data with sequences from the first plurality of sequences having the same hash value to determine a first sequence of data and a second sequence of data present in both the first file and the second file; (f) storing, by the appliance, representations of lengths and locations of the first sequence of data and the second sequence of data present in both the first and second files; and (g) creating, by the appliance, a third file comprising sequences of data from the second file and a representation of a location and a length of the first sequence of data, the representation of the location identifying a number of bytes between a last byte of the first sequence of data and a byte preceding a first byte of the second sequence of data, the length identifying a number of matching bytes of the first sequence of data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for efficiently receiving updates to previously stored files, said method comprising:
-
(a) receiving, by a client, a first file comprising sequences of data; (b) receiving, by the client, a second file comprising sequences of data and representations of locations and lengths of sequences in the first file, wherein at least two of the representations of locations and lengths of sequences correspond to overlapping sequences of data, the second file comprising a representation of a location and a length of a first sequence of data present in both the first and second files, the representation of the location identifying a number of bytes between a last byte of the first sequence of data and a byte preceding a first byte of a second sequence of data, the second sequence of data present in the first file and the second file, the length identifying a number of matching bytes of the first sequence of data; and (c) executing a Javascript function configured on the client to create a third file comprising sequences of data from the second file and sequences of data in the first file indicated by the second file. - View Dependent Claims (14, 15, 16)
-
-
17. A computer system for creating efficient updates to a previously stored file, said system comprising:
-
a transceiver which receives a first and second file, each file comprising a respective plurality of sequences of data; a hash engine which communicates with said transceiver and computes hash values for sequences of data in the first and second file, wherein at least two of said sequences overlap, and determines a first sequence of data and a second sequence of data present in both the first and second files; a storage element which communicates with said hash engine and which stores representations of the lengths and locations of said first sequence of data and second sequence of data present in both the first and second files; and a processor which communicates with said storage element and which creates a third file comprising sequences of data from the second file and a representation of a location and a length of the first sequence of data, the representation of the location identifying a number of bytes between a last byte of the first sequence of data and a byte preceding the first byte of a second sequence of data, the length identifying a number of matching bytes of the first sequence of data. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method for creating efficient updates to a previously stored file, the method comprising:
-
(a) receiving, by an appliance intermediary to a client and a server, a first file comprising a first plurality of sequences of data; (b) receiving, by the appliance, a second file comprising a second plurality of sequences of data; (c) creating, by a hash engine of the appliance, a hash table having a plurality of entries, each of the plurality of entries corresponding to a respective one of the first plurality of sequences, and wherein at least two of the plurality of entries correspond to overlapping sequences of data; (d) computing, by the hash engine, hash values for the second plurality of sequences of data; (e) comparing, by the hash engine, each of the second plurality of sequences of data with sequences from the first plurality of sequences having the same hash value to determine a first sequence of data and a second sequence of data present in both the first file and the second file; (f) storing, by the appliance, representations of lengths and locations of the first sequence of data and the second sequence of data present in both the first and second files; and (g) creating, by the appliance, a third file comprising sequences of data from the second file and a representation of a location and a length of a first sequence of data present in both the first and second files, a second sequence of data preceding the first sequence of data, the representation of the location identifying a number of bytes in the first file between a last byte of the first sequence of data and a byte preceding a first byte of the second sequence of data, the length identifying a number of matching bytes of the first sequence of data.
-
Specification