Ruby on rails 轨道&x2B;Heroku上的回形针非常慢

Ruby on rails 轨道&x2B;Heroku上的回形针非常慢,ruby-on-rails,ruby,heroku,amazon-s3,paperclip,Ruby On Rails,Ruby,Heroku,Amazon S3,Paperclip,我使用Heroku+AmazonS3+回形针gem组合上传文件。它正在工作,但上传本身非常慢 我尝试购买额外的dyno,并对模型进行了一点更新: class Image < ActiveRecord::Base belongs_to :imageable, :polymorphic => true belongs_to :user belongs_to :album attr_accessible :caption, :title, :image, :image_

我使用Heroku+AmazonS3+回形针gem组合上传文件。它正在工作,但上传本身非常慢

我尝试购买额外的dyno,并对模型进行了一点更新:

class Image < ActiveRecord::Base

  belongs_to :imageable, :polymorphic => true
  belongs_to :user
  belongs_to :album

  attr_accessible :caption, :title, :image, :image_file_name, :user_id, :album_id


  has_attached_file :image,
                    :styles => { :tiny => '100x100>', 
                                 :original => "900x900>" },
                    :path => ":rails_root/public/images/:user_id/:style/:basename.:extension",
                    :url  => ":s3_eu_url"

  process_in_background :image
end
类映像true
属于:用户
属于:相册
属性可访问:标题、标题、图像、图像文件名、用户id、相册id
已附加文件:图像,
:styles=>{:tiny=>'100x100>',
:original=>“900x900>”},
:path=>“:rails\u root/public/images/:user\u id/:style/:basename.:extension”,
:url=>“:s3\u eu\u url”
处理背景中的图像:图像
结束
这在Heroku上运行得非常快,但是:我选择了一个要上传的文件,点击上传按钮,几秒钟内页面就会刷新。我没有看到上传的图片本身,因为还没有上传。但后台进程将上传它。 当我在2-4秒后刷新页面时,我可以正确地看到上传的图像

但这不是一种非常方便用户的方法。 如何使用回形针和延迟作业快速将图像上传到Heroku?我缺少什么来正确设置它


感谢

尝试一款名为it的新Gem,它允许您使用html表单将文件直接上传到S3,并轻松将图像处理转移到后台处理

从用户角度来看,您将无法避免从完成从pc上传到完成处理(和/或复制到S3)所需的时间

您所能做的最好的事情是改进您的用户体验,但要么显示文件尚未完成处理的消息,然后要求用户返回并稍后重试

也就是说,您可以直接上传到s3(但不需要回形针,因为这是您的处理器,并且您需要heroku服务器(或任何其他服务器)上的imagemagick来处理您的样式

看到这个了吗

如果只需向用户发送一条消息就可以解决您的原始问题(即提高用户友好性),那么您自己处理这一切可能会非常痛苦。

1)如果您的应用程序可能,您可以将s3存储桶位置更改为US East,作为附加解决方案。它不会完全解决这个问题,但会提高上传速度


2) 您可以使用s3_direct_upload直接上传到s3

最近我更喜欢做即时图像处理。很多时候,我使用回形针只是为了在重新设计过程中改变前端需求,迫使我在批处理作业中重新处理所有UG图像

我创建了一个适用于rails的简单gem,让您代理用户上传的图像,并通过更改url参数按需处理它们:

它接受与您在曲别针中的:styles散列中提供的相同类型的几何体字符串。它相对较新,但也很简单,我正在生产中使用它。也欢迎捐款

用法:

<%= $your_cdn_base_uri + processed_image_uri_for( "http://mybucket.s3.amazonaws.com/path/to/img.jpg", '100x100>' ) %>

Research直接上传到s3