Congested networks and overloaded servers resulting from the ever growing number of Internet users contribute to the lack of good quality video streaming over the Internet. We propose a design and implementation of a caching system for streaming media, which utilizes its local memory and disk resources to reduce network and server load, while also improving the video and audio quality perceived by end users. In particular, request aggregation, prefix caching and rate control mechanisms are used in the system design. The effectiveness of the system is validated through performance results from prototype implementation. As expected, the caching system reduces network and server load and improves client start-up latency.