1. A method comprising: (a) receiving, by a device intermediary to a plurality of clients and a server, a response from the server to a request for a web page by a client of the plurality of clients, the device storing a first file comprising a first plurality of sequences of data from a previous response served by the server; (b) generating, by the device, an object list identifying object data within the response that is to be downloaded to the client; (c) maintaining, by the device, a hash table having a plurality of entries, each of the plurality of entries corresponding to a respective one of a first plurality of sequences of data in the first file, and wherein at least two of the entries correspond to overlapping sequences of data; (d) computing, by the device, hash values of a second plurality of sequences of data from the response for a second file; (e) comparing, by the device, each of the second plurality of sequences of data with sequences from the first plurality of sequences having the same hash value to determine sequences of data present in both the first file and second file; (f) creating, by the device, 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 file and second file, the representation of the location identifying a number of bytes between the first sequence of data and a second sequence of data present in both the first file and the second file, the length identifying a number of matching bytes of the first sequence of data; and (g) transmitting, by the device, the third file and the object list to the client.