我正在從Ruby 1.8.7升級到1.9.3和從Rails 2.3升級到3.2作爲該升級的一部分,我將從Paperclip 2.2.9遷移到3.5.2。我的ImageMagick版本是6.8.6。作爲升級過程的一部分,我發現了一個問題,就大型(〜1 MB)文本文件而言,上傳性能非常差。有問題的文件不需要特別是.txt文件,任何以純文本格式(例如.xml文件)的文件也會受到影響。性能問題通過回形針上傳大文本文件
供您參考,這裏是我的回形針設置:
has_attached_file :attachment,
:url => "/shared_documents/:id/:basename.:extension",
:path => ":rails_root/user_uploaded_content/shared_documents/:id/:basename.:extension"
爲簡單起見,我忽略我們的驗證等,因爲我們只是檢查文件的大小和存在。
看着在我的開發機器上運行的頂級進程,似乎在Paperclip調用ImageMagick的identify
命令時會出現瓶頸。通過命令行在各種文件上調用identify
已允許我驗證圖像文件幾乎立即返回元數據,但大型非圖像文本文件需要很長時間才能處理。
對於我的應用程序,我允許用戶以任何格式上傳文檔,因此我必須能夠有效地處理圖像和文本文件。有其他人遇到過這個問題嗎?有沒有辦法有選擇地禁用調用identify
在回形針某些文件格式,但不是其他人?否則,如果這是一個選項,我們可以簡單地不要致電identify
。也許有一種方法可以將ImageMagick配置爲更適合處理大型文本文件?
憑藉before_post_processing callbac k是關鍵!事實證明,我的性能問題不在於上面描述的設置,而是在圖像被複制到永久性永久更改日誌中,我們正在執行後期處理以縮略圖。最後,我檢查了附件的內容類型以選擇性地處理或不進行處理。 – emcallaway