CarrierWave Wiki https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Add-more-files-and-remove-single-file-when-using-default-multiple-file-uploads-featureでこの記事を読んで、CarrierWave複数アップロード機能を使用して、Carrierwave - 画像を追加または削除する際に複数の画像のアップロードが遅すぎる
その記事のメインコードは、それが動作する
def add_more_images(new_images)
images = @gallery.images
images += new_images
@gallery.images = images
end
def remove_image_at_index(index)
remain_images = @gallery.images # copy the array
deleted_image = remain_images.delete_at(index) # delete the target image
deleted_image.try(:remove!) # delete image from S3
@gallery.images = remain_images # re-assign back
end
です。 しかし、それはあまりにもスローです。 Iログを見ていると、全体の処理時間は次の通りである:
- アップロード1枚の画像:それは追加
- 8500ms(2イメージ)かかり:それは1以上の画像を追加
- 例えば5000msを取ります1枚の以上の画像:それは
- 12000ms(3枚の画像)かかり1枚の画像を削除します。それは私が私のローカルマシン上の著者によって書かれたこのソリューションのサンプルアプリケーションをテストしている(バック2枚の画像へ)8400ms
を取りますそれは非常に遅すぎる。
CarrierWaveは1枚の画像を追加または削除するだけで、すべての画像を再アップロードして再処理するようです。私は、古い画像を新しいものとして扱うように、新しい画像の配列を@galleryに再割り当てしているためだと思います。
はまた、関連する問題がここにhttps://github.com/carrierwaveuploader/carrierwave/issues/1704#issuecomment-259106600
あり誰もがCarrierWave複数のアップロード機能を使用して画像を追加および削除する任意のより良い解決策を持っていますか?
ありがとうございました。