QQ 旋风推出了离线下载功能,试用了下,有些疑问,于是打算设计点实验探探原理.

在开始之前,先简单说说我观察到的现象:

  • 随手找了几个资源添加到离线下载,发现都是瞬间完成.
  • 有些原始下载地址下载速度很慢,通过离线下载加速后速度得到了稳定提升.

现象说完了,下面开始准备实验环境.

  1. 首先搭建一个 FTP 服务器,设置修改为每 IP 允许 2 个线程,每线程限制速度为 20K/S ,以便评估每个任务腾讯会启用多少台服务器来完成.
  2. 然后创建一个”独一无二”的文件,把某文件与空白文档打包并增加密码.保证使用离线下载不受盗链的影响.丢到 FTP 服务器上.试着下载了一下,资源数 1 ,符合要求.
  3. 创建离线下载任务,观察 FTP 日志,发现只有一台机器链接.
  4. 删除离线下载任务,发现服务器仍然在下载,尝试 T 掉,对方客户端再次链接.
  5. 重新建立离线下载等待完成,然后转存到本地,下载速度满速.
  6. 删除离线下载,新建普通下载,资源数仍然为 1 .
  7. 勾选离线下载,离线下载进度瞬间完成,普通下载满速.

得出的结论:

  • 腾讯的离线下载每次会使用一台服务器加速(步骤 3 ).
  • 即使删除离线任务,服务器仍然会将任务下载完并缓存,以备下次使用.不知道腾讯收集了多少文件,又准备了多少服务器?(步骤 4 )
  • 离线下载的资源有权限限制,也就是说,如果你没有使用离线下载,旋风并不会将腾讯的离线服务器加入盗链列表.(步骤 5 与 6 )
  • 即使删除离线任务,文件并不会在离线服务器上删除,仍然会被缓存.(步骤 7 )