使用Paperclip和S3时,redirect_to而不是send_file会提供更好的渲染时间吗?

时间:2011-06-25 17:51:33

标签: ruby-on-rails amazon-s3 paperclip

我有一个应用程序,它位于Heroku生态系统中,它使用paperclip的S3存储机制。在通过控制器操作发送文件数据时,是否有人使用send_fileredirect_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响应。

1 个答案:

答案 0 :(得分:0)

好吧,send_file违背了使用s3的全部目的......你将使用app服务器来提供文件。使用重定向