As was mentioned in the introduction, one difference between our system and the proposal of Dingle and Partl [5] is the ability to abort the transfer of stale data. In fact, there are two cases when it is more appropriate to behave like standard proxies and just send the current version of a page to the client without delta processing.
In the ``simple delta'' case, the client and server proxies cache the same stale version of the page, and only the delta need be sent. If the delta is as large as the current page, the current page rather than the delta must be sent. If the delta is somewhat smaller, one could use heuristics to decide whether the cost of recreating the current version from the delta exceeds the benefits due to bandwidth reduction. We currently transfer the delta any time it is smaller than the original.
The other case occurs when an optimistic transfer is in progress and the new version of the page starts to arrive at the server proxy. If most of the stale version has been sent and the delta is small, it pays to finish sending the stale version; if there is a lot of data yet to be transferred and/or the delta is large, the transfer should be aborted and the current version should be sent as it becomes available.
If the cost of recreating the page from the stale version and the delta is negligible, and we assume that the two versions are the same size, then we should continue to send the stale version any time the remaining stale data plus the size of the delta is less than the size of the current version. (In practice, we will know the size of the current version if the Content-length header field is present.) Assume the length is L and the size of the delta is . If we have already transferred bytes of the stale version, then transferring the remainder plus will require no more bytes than sending all L bytes of the current version.
Since we have no way of knowing how large a particular delta will be, any scheme that depends on computing the delta only after the whole response has been received by the server proxy can sometimes perform badly. However, there is an entire family of increasingly sophisticated abort schemes that one can think of, which can be integrated into the process of receiving the current version, producing the delta on the fly, and aborting if the delta appears large.