2012-10-31 119 views
1

我的內部使用的小型項目就像「sharerapid」這樣的文件共享門戶網站,它將用於大約100人。我在下載大文件時遇到問題。小文件(< 200 MB)正在快速下載,但最大的文件會阻止我的服務器2-5分鐘。也許問題是RAM,我有2 GB RAM。我的代碼來下載文件:使用Ruby on Rails下載大文件

def custom_send(userfile) 
    file = userfile.attachment.file.url.to_s.split("?").slice(0..-2).join("?") 
    send_file "#{Rails.root.to_s}/public#{file}" , filename: userfile.name, x_sendfile: true 
end 

我不知道哪裏是問題,在發展模式在我的本地機器是好的,但問題是公共虛擬服務器上(Ubuntu的12)。

回答

0

您使用的是什麼Web服務器?最可能的原因是請求在單線程環境中阻止了進一步的請求。

你的問題的最佳解決方案將是在亞馬遜s3上託管文件並鏈接到那裏。如果文件必須保留的地方,你可以嘗試更多的東西是這樣的:

http://www.therailsway.com/2009/2/22/file-downloads-done-right/

+0

阿帕奇與passenger.I需要存儲數據localy(安全原因)。我在創建這個問題之前嘗試了它,但不工作,但我認爲我不激活模塊。我用apt-get安裝它,重啓apache。我在哪裏添加「XSendFileAllowAbove on」?我將它添加到http.conf(不工作)和myapp_apache_virtualhost_conf(不工作)。 – quatermain