Files are divided into parts and at least some of the parts are
transmitted to a client using a communication channel. At least some of
the transmitted parts are cached locally. This allows subsequent
streaming playback of the file while using less bandwidth by transmitting
the part of the file that hasn't been cached, and combining the cached
parts with the transmitted parts. In some embodiments, files may be
represented at a low quality level by a first data set, and at higher
quality levels with additional data sets. Data sets are cached locally,
so that during subsequent streaming playback of the file, the quality
level of the playback may be improved by sending additional data sets
using bandwidth that would otherwise be dedicated to transmitting the
cached data sets.