Methods for serving data include maintaining an incomplete version of an
object at a server and at least one fragment at the server. In response
to a request for the object from a client, the incomplete version of the
object, an identifier for a fragment comprising a portion of the object,
and a position for the fragment within the object are sent to the client.
After receiving the incomplete version of the object, the identifier, and
the position, the client requests the fragment from the server using the
identifier. The object is constructed by including the fragment in the
incomplete version of the object in a location specified by the position.