Patent ID: 8874697

Claim:
A method, comprising: receiving, by a server computing device, a request from a client computing device for a file stored at the server computing device, wherein the client computing device supports a chunking and hashing capability for content transmission from a plurality of applications executed at the client computing device and comprises a system application data cache to store content transmitted using the chunking and hashing capability, the system application data cache accessible by each of the plurality of applications to reference content communicated with other applications of the plurality of applications; providing an indication to the client computing device that the chunking and hashing capability for content transmission is supported by the server computing device; negotiating, by the server computing device with the client computing device, a size of chunks of data for transmission, the negotiating via a list of supported chunk sizes sent to the client computing device and a response from the client computing device indicating which supported chunk size the client computing device prefers; dividing, by the server computing device, the file into a plurality of chunks; and for each chunk of the plurality of chunks of the file: obtaining, by the server computing device, a hash for the chunk; sending, by the server computing device, the hash for the chunk to the client computing device, wherein the client computing device computes a local hash of each chunk stored in the system-wide application data cache to compare to the received hashes from the server device, wherein a hash algorithm to use to compute the local hashes and the received hashes is determined from an agreement made between the client computing device and the server computing device; receiving, by the service computing device, a request to send the chunk associated with the hash in response to the client computing device determining that the hash does not match hashes stored at the client computing device; and sending, by the server computing device in response to the received request, the chunk associated with the hash to the client computing device if such sending is enabled.