2011-06-12 73 views
3

我想讓我的網站更快。我知道我可以製作CSS精靈並壓縮我的HTML和CSS。Rails如何優化我的網站?

有沒有其他方法可以優化我的頁面速度?

一個例子是此頁:http://www.vinderhimlen.dk/konkurrencer/vind-elektronik

它需要幾秒鐘的加載共享按鈕,評級明星和Facebook的喜歡。我真的想優化它。我只是不認爲最小化HTML和CSS就夠了。

+1

你是否真的需要這麼多分享按鈕?我等了30秒,然後點擊停止按鈕(在我的5Mbit/s連接上)。 – 2011-06-12 20:10:54

+4

http://pagespeed.googlelabs.com/#url=http_3A_2F_2Fwww.vinderhimlen.dk_2Fkonkurrencer_2Find_elektronik&mobile=false – Dogbert 2011-06-12 20:14:34

+0

@Timofey - 是的,它是網站的重要組成部分。 JavaScript可以緩存這些按鈕嗎?他們是緩慢的...... – 2011-06-12 20:20:01

回答

6

不管你做什麼來擴展或增加Rails的性能,你都會希望在之前和之後進行基準測試。安裝最新的性能增強插件或者複製其他人的技術很容易,但是如果不測量執行時間,則永遠不會知道所做的事情是否會提高性能或降低性能。

表現是相對的,可以根據很多因素而有所不同。有兩個方面的性能對於縮放Rails很重要:

  • 延遲 - 我們可以以多快的速度回答請求?這是根據請求和響應之間的時間來衡量的。
  • 吞吐量 - 我們可以在給定的時間內處理多少個請求?這被測量爲每秒響應。

在我們進行一般性能測試後,我們可以很容易地看到瓶頸開始出現。在這一點上,我們可以進一步使用打包工具來重點領域縮小到一個或多個以下,這是最常見的爲最不常見的:

  • 數據庫問題:可憐的自定義SQL,不正確或非最佳連接和關聯,過大的數據庫表等。
  • 模型問題:業務規則過於複雜或設計不正確。
  • 前端視圖問題:可憐的HTML或CSS選擇,非常大的JavaScript庫,未優化的圖像等
  • 事務性問題:太少的雜種狗(或其它應用服務器)實例上運行,而不是足夠的硬件,寫得不好或者非最優控制器,正確的架構應用等

通常人們認爲的事務問題的表現不佳的原因,當更多的時候它是由其他類型的問題造成的。

如果您設計不佳的自定義SQL,超大型數據庫表或非最佳連接或關聯,無論您將多少硬件投入混合,都可能永遠不會提高性能。您的Rails應用程序不會擴展。同樣的事情適用於一些交易問題。如果在開發的設計和編碼階段遵循不好的實踐,就會出現大多數可擴展性問題。

下面的工具將是決定您的瓶頸生活有幫助...

  • query_analyzer」鮑勃 - 席爾瓦的MySQL的工具,自動地解釋每個查詢。
  • ruby-prof」 - 一種快速Ruby代碼寫入C.
  • pl_analyze」 探查 - 寫由Eric霍德爾,此分析從SysLogLogger記錄器輸出。
  • yslow」 - 一個Firebug插件,用於測量和確定特定頁面緩慢的原因。
  • YUI compressor」 - 雅虎表現團隊的Javascript/CSS壓縮工具。

一旦您確定存在問題的位置,就可以更輕鬆地將每個問題歸零並解決。

-1

您可以按照您的建議做一些小事情,但最大的改進可能是使用選擇性緩存或片段緩存。

緩存經常無法更改的所有內容。當他們改變時,您總是可以使部分緩存無效。

這是我能夠通過RoR網站製作的唯一方法,甚至可以很快。

+3

這不是導致它慢的Rails,它是所有的圖像,CSS和JavaScript,它們都是靜態的。 – 2011-06-12 21:49:16