我正在使用paperclip gem的rails 2应用程序在s3上传图像。 有时上传图片需要很长时间,而且上传时间非常快。
所以问题与s3上的服务器空间或我的网速有关?
答案 0 :(得分:1)
您的问题的答案是主观代码和互联网连接..
例如: -
如果您使用多种样式,例如: -
:styles => { :thumb => " 100×100#&#34 ;, :small => " 150×150>&#34 ;, :medium => " 200×200" }
然后..这可能需要时间...因为你正在运行时转换图像..这就是为什么我们delayed_paperclip只获得我们在其他即将到来的页面上真正需要的样式并转换其余的使用redis
的背景中的样式。
article has_many :photos
方法并删除所有不需要的代码,并仅强调创建/保存对象,其余部分可以由image#create
或after_create
。使用rails profiler来理解和优化代码...... 答案 1 :(得分:0)
在类似问题上查看我的post。
基本上,使用Threads可以更快地显示 。它实际上不会让事情变得更快,它只会在一个单独的进程中运行代码,并且不会占用主代码执行时间。
加载下一页时,除非您在几秒钟后再次刷新页面,否则不会显示任何图像。
如果您一次保存一张图片。
# cats_controller.rb
def create
@cat = Cat.find params[:id]
mutex = Mutex.new
Thread.new do
mutex.synchronize do
@cat.update cat_params
end
end
end
如果您一次上传多张图片
# cat.rb
def files=(array = [])
threads = []
semaphore = Mutex.new
array.each do |f|
threads << Thread.new do
semaphore.synchronize do
images.create file: f
end
end
end
end