5種方法來加速你的Rails應用

Ruby是一門很“快”的編程語言,在很多方面表現得很好,但是你如果沒有正確使用它,那麼就這不是這樣的啦。不注意的話,很容易讓應用慢下來。接下來我指出5種方法來加速Rails應用。

這裏說明一點,不要爲了優化而優化,只有你在發現你的應用慢下來的關鍵,找準關鍵點,再針對它進行優化。

[size=large]預先載入關鍵對象:Eager Load Associations[/size]
:include選項知道吧,避免N+1次查詢。當然只有你在你要用到關聯的對象才使用這個。

[size=large]數據庫能做的事情就讓數據庫來做好了:Do Database Work In the Database[/size]
數據庫就是用來做大量數據檢索和計算的,而Rails不是,所以如果是數據庫能做的事情就讓數據庫來做好了。
舉一個例子:你想看看當前登錄的用戶是否評論了某一篇文章,你不必查出這篇文章的所有評論記錄,然後each,來與當前登錄的關聯評論比較。這個事情讓數據庫來做是這樣的:[b]Article.comments.count(:conditions => ["user_id = ?", current_user.id]) > 0[/b]

[size=large]在HTTP請求週期裏儘可以做少的事情:Do as Little as Possible During the HTTP Request Cycle[/size]
舉個例子來說明這個問題:我們有可能要在一個控制器裏發送大量的郵件,這樣會導致發起的這個HTTP請求時間很長,我們可以將這個事情作爲一個後臺任務,讓後端來執行。任務隊列就是做這個事情的。Rails3中好像會有這樣的一個東東,不過我建議你們可以看看 [url]http://github.com/tobi/delayed_job/tree/master[/url] 和 [url]http://github.com/github/bj/tree/master[/url]

[size=large]讓Gem和Plugin來加速你吧 Know Your Gems and Plugins[/size]
Rails快速發展着,其中一個很好的現象就是社區中越來越多優秀的Gem和Plugin出現。在你要開發某一個特定功能的時候(如Vote)你可以先調研一下,看是不是有人已經完成了這樣的工作。當然依賴一個GEM和PLugin是有風險的,所以在決定使用它們之前,一定要對它的源代碼熟悉,研究一番。

[size=large]避免創建無用的對象 Avoid Creating Unnecessary Objects[/size]
這個不用多說,在Ruby中 方法後面多一個"!"號和沒有這個感嘆號的區別就能說明這一點。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章