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.