PDF和Ruby on Rails

问题描述:

当用户碰到get_pdf动作可能会出现什么问题? 如果有问题,该如何解决?PDF和Ruby on Rails

class PdfController < ApplicationController 
    def get_pdf 
    send_data Pdf.create(params[:contents]) 
    end 
end 

class Pdf 
    def self.create(contents) 
    make_pdf(contents) # takes 30 seconds to run 
    end 
end 

的主要问题是,通常你将有Rails的数量有限的服务器上的进程,每一次用户做出他占据了整个Rails的过程中请求期间的请求。

假设你有8点轨的过程。如果八个用户同时请求PDF,这些过程将全部被占用30秒,并且没有其他人可以使用您的站点30秒。

如果你深入研究它,你会发现实际上停机时间会比30秒长,因为Rails必须花费时间将文件发送给用户,并且用户可能会有一个缓慢的互联网连接。你也许可以,如果您启用了正确的缓冲在Web服务器或者使用类似的nginx的X-Accel-Redirect来解决这个问题。

的另一个问题是,无论网络服务器正在运行它决定Rails已经等了太久后可能会放弃该请求。它可能不会在30秒后放弃,但也许你应该检查你的Web服务器配置,以确保它。

你也应该请务必提供正确的HTTP头告诉浏览器是什么类型的文件,这是。我认为Content-Type是你需要的。