跟踪和节流下载

时间:2014-08-12 16:25:10

标签: ruby-on-rails nginx download

如果我有一个允许文件上传和下载的rails应用程序,我如何以编程方式限制一个人下载文件的速度?

我可以在nginx中设置它:

limit_rate 150k;

但是我应该如何以编程方式在rails中执行此操作,以便send_file方法以较慢的速度发送文件,具体取决于他们已经下载了多少?

我应该如何跟踪他们下载了多少?

告诉我你是否认为这是一个好主意:

  1. File模型提供size属性
  2. 当用户请求文件时,请将文件size记录到加密的Cookie
  3. 对于后续下载,请继续将每个文件size添加到Cookie中的整数
  4. 设置一个前挂钩,检查加密的cookie的编号是否低于x个字节数。如果它大于x,请通过此问题的第一部分开始限制。大于y重定向到验证码,等等......
  5. 我很乐意看到如何克服重定向到nginx的问题...

1 个答案:

答案 0 :(得分:0)

我不会在Rails中限制下载 - 你需要将整个Rails实例捆绑更长时间。事实上,如果可能的话,我根本不会使用Ruby来提供文件。

我会设置网络服务器直接提供文件,然后重定向到那些文件。我确信你可以在nginx中为不同的虚拟目录设置不同的配置,例如,然后使用不同的下载链接以编程方式选择它们......