重构下载模块