Efficient tree-based caching for effective QoS peer-to-peer file sharing