A receiving peer entity apparatus for use in an overlay network (120, 108, 118), comprising: a processor (210, 302, 304, 404); a dictionary comprising, for a piece of content (106, 206) associated with a host/path, one or more versions of the piece of content and, for each version, a fingerprint, wherein the fingerprint is a fingerprint generated by applying a cryptographic hash function to the version; an HTTP proxy; computer memory holding program code executed by the processor to perform data differencing between the receiving peer entity apparatus and a sending peer entity apparatus of the overlay network, the program code comprising: program code operative to receive from the HTTP proxy a request for a new version of the piece of content that is not available at the HTTP proxy, to associate with the request one or more fingerprints corresponding to the one or more versions of the piece of content in the dictionary, and to return to the HTTP proxy, for delivery forward towards an origin server, a modified request that includes the one or more fingerprints; and program code operative to receive from the HTTP proxy a data stream, the data stream having been received by the HTTP proxy in response to the modified request, the data stream including data representing a difference between the new version of the piece of content and that version of the piece of content represented by a given one of the one or more fingerprints that was included in the modified request, the data stream also including an identification of the given one of the one or more fingerprints, to generate the new version of the piece of content from the difference and the version of the piece of content represented by the given one of the fingerprints, and to return to the HTTP proxy, for delivery back to a requesting client, the new version of the piece of content so generated. a processor (210, 302, 304, 404); a dictionary comprising, for a piece of content (106, 206) associated with a host/path, one or more versions of the piece of content and, for each version, a fingerprint, wherein the fingerprint is a fingerprint generated by applying a cryptographic hash function to the version; an HTTP proxy; computer memory holding program code executed by the processor to perform data differencing between the receiving peer entity apparatus and a sending peer entity apparatus of the overlay network, the program code comprising: program code operative to receive from the HTTP proxy a request for a new version of the piece of content that is not available at the HTTP proxy, to associate with the request one or more fingerprints corresponding to the one or more versions of the piece of content in the dictionary, and to return to the HTTP proxy, for delivery forward towards an origin server, a modified request that includes the one or more fingerprints; and program code operative to receive from the HTTP proxy a data stream, the data stream having been received by the HTTP proxy in response to the modified request, the data stream including data representing a difference between the new version of the piece of content and that version of the piece of content represented by a given one of the one or more fingerprints that was included in the modified request, the data stream also including an identification of the given one of the one or more fingerprints, to generate the new version of the piece of content from the difference and the version of the piece of content represented by the given one of the fingerprints, and to return to the HTTP proxy, for delivery back to a requesting client, the new version of the piece of content so generated. program code operative to receive from the HTTP proxy a request for a new version of the piece of content that is not available at the HTTP proxy, to associate with the request one or more fingerprints corresponding to the one or more versions of the piece of content in the dictionary, and to return to the HTTP proxy, for delivery forward towards an origin server, a modified request that includes the one or more fingerprints; and program code operative to receive from the HTTP proxy a data stream, the data stream having been received by the HTTP proxy in response to the modified request, the data stream including data representing a difference between the new version of the piece of content and that version of the piece of content represented by a given one of the one or more fingerprints that was included in the modified request, the data stream also including an identification of the given one of the one or more fingerprints, to generate the new version of the piece of content from the difference and the version of the piece of content represented by the given one of the fingerprints, and to return to the HTTP proxy, for delivery back to a requesting client, the new version of the piece of content so generated.