我有一个应用程序,它位于Heroku生态系统中,它使用paperclip的S3存储机制。在通过控制器操作发送文件数据时,是否有人使用send_file
与redirect_to
进行了性能测试?具体来说:
class ImagesController < ApplicationController
def show
@image = Image.find_by_name(params[:name])
render :nothing => true, :status => 404 and return if missing_source(@image)
respond_to do |format|
format.html { send_file(@image.source.to_file.path,
:type => @image.source_content_type,
:disposition => 'inline') }
format.xml { render :xml => @image }
end
end
private
def missing_source(image)
image.nil? || !image.source.exists?
end
end
我的问题是,使用
是否“更好”redirect_to @image.source.url
而不是
send_file(@image.source.to_file.path,
:type => @image.source_content_type,
:disposition => 'inline')
使用send_file
,似乎pclip从S3请求文件,将文件临时保存在本地文件系统上,然后将其发送到浏览器。使用redirect_to
,控制器只会向客户端发出3xx响应。
答案 0 :(得分:0)
好吧,send_file违背了使用s3的全部目的......你将使用app服务器来提供文件。使用重定向