2012-06-12 20 views
0

以下代碼只是將給定的字符串寫入存儲到文件系統的現有映像。就圖像處理而言,它並不是很複雜。但是,調用MiniMagick顯然會產生一些開銷。另外,這個例程會被非常頻繁地調用,所以它需要儘快完成。使MiniMagick例程儘可能在Ruby/Rails上運行?

除了將映像緩存到磁盤之外,我還有哪些選擇使用rails/ruby​​來確保此代碼在最高性能下運行?

variable = "some string" 

mm = MiniMagick::Image.open("#{Rails.root}/app/assets/images/b.png") 
    mm.combine_options do |c| 
    c.gravity 'center' 
    c.pointsize '13' 
    c.draw "text 33,0 '#{variable}'" 
    end 

send_data(mm.to_blob, :type => 'image/png', :disposition => 'inline' 
+0

您是否試圖使客戶端的HTTP調用盡可能快地返回?或者你是否試圖讓這個例程儘可能地運行? –

+0

@JesseWolgamott好問題。其實兩者都有,但這裏的重點是圖像處理。但是無論在協議層面如何調整,這當然都會帶來巨大的好處。 :) –

回答

1

用於圖像的標準方法處理它做它在後臺 - (可能直接向S3)用戶上傳圖像,然後服務器處理在後臺圖像縮略圖。

這使應用盡可能快。這是一種在背景中使用復原來處理載波上傳的方法:https://github.com/lardawge/carrierwave_backgrounder

然後,您會將此圖像處理作爲步驟移動到載波上,而且您很好!

+0

不幸的是,這個過程必須保持在請求/響應週期內,因爲結果必須立即顯示。這就是我問這個問題的原因。任何可以完成的事情。明智的假設例程不能用Resque卸載? –

+0

不,這裏的標準方法是背景(或線程) –

相關問題