2

ファイルのアップロードには、Heroku + Amazon S3 + Paperclip 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

これは Heroku で非常に高速に動作しますが、アップロードするファイルを選択し、[アップロード] ボタンをクリックすると、数秒以内にページが更新されます。はまだアップロードされていないため、アップロードされた画像自体は表示されません。ただし、バックグラウンドのプロセスはそれをアップロードします。2〜4秒後にページを更新すると、アップロードされた画像が正しく表示されます。

しかし、これはあまりユーザーフレンドリーな方法ではありません。Paperclip と遅延ジョブを使用して画像を Heroku にすばやくアップロードする方法は? 正しく設定するために何が欠けていますか?

ありがとう

4

4 に答える 4

0

1) アプリケーションで可能な場合は、追加のソリューションとして s3 バケットの場所を米国東部に変更できます。問題を完全に解決するわけではありませんが、アップロード速度が向上します。

2) s3 への直接アップロードには s3_direct_upload を使用できます。http://blog.littleblimp.com/post/53942611764/direct-uploads-to-s3-with-rails-paperclip-and

于 2013-07-21T12:37:03.187 に答える
0

CarrierWaveDirectという新しい Gem を試す

于 2013-07-21T08:17:59.570 に答える
0

PCからのアップロードが終わってから処理(s3へのコピー)が終わるまでの時間は、ユーザー目線では避けては通れません。

あなたにできる最善の方法は、UX を改善することですが、ファイルの処理がまだ完了していないというメッセージを表示し、ユーザーに戻って後で試すように依頼することです。

そうは言っても、s3 に直接アップロードできます (ただし、ペーパークリップはプロセッサであり、スタイルを処理するには heroku サーバー (または他のサーバー) で imagemagick が必要なため、ペーパークリップは必要ありません)。

モデルに接続された Paperclip has_attached_file を使用して S3 に直接アップロードするにはどうすればよいですか?

およびhttp://aws.amazon.com/articles/1434?_encoding=UTF8&jiveRedirect=1

ユーザーへの小さなメッセージが元の問題 (ユーザー フレンドリーを改善すること) を処理するすべての場合、これらすべてを自分で処理するのは非常に面倒な場合があります。

于 2013-07-21T08:36:00.320 に答える
0

最近はジャスト イン タイムの画像処理を好むようになりました。再設計中にフロント エンドの要件が変更され、すべての UG 画像をバッチ ジョブで再処理する必要が生じたために、ペーパークリップのみを使用したことが何度もありました。

Rails での使用に適したシンプルな gem を作成しました。これにより、ユーザーがアップロードした画像をプロキシし、URL パラメーターを変更することでオンデマンドで処理できます: https://github.com/jcihocki/uncut

ペーパークリップの :styles ハッシュで指定したのと同じタイプのジオメトリ文字列を受け入れます。これは比較的新しいものですが、非常にシンプルでもあり、本番環境で使用しています。貢献も歓迎します。

使用法:

<%= $your_cdn_base_uri + processed_image_uri_for( "http://mybucket.s3.amazonaws.com/path/to/img.jpg", '100x100>' ) %>
于 2013-07-21T16:14:33.877 に答える