我需要爲我的客戶開發一個電子商務網站。 他希望速度非常快(每頁1.25秒或更少)。 我有我的標準 - 3秒。 所以1.25秒很有挑戰性。如何讓我的網站這麼快?
他向我展示了一個加載非常快的網站。 http://www.papayaclothing.com/shop/ 令人印象深刻。
我將用Spree電子商務解決方案(Ruby on Rails)進行開發。 但是,我不認爲Ruby on Rails可以快速執行。
對我有何建議?
謝謝。
山姆
我需要爲我的客戶開發一個電子商務網站。 他希望速度非常快(每頁1.25秒或更少)。 我有我的標準 - 3秒。 所以1.25秒很有挑戰性。如何讓我的網站這麼快?
他向我展示了一個加載非常快的網站。 http://www.papayaclothing.com/shop/ 令人印象深刻。
我將用Spree電子商務解決方案(Ruby on Rails)進行開發。 但是,我不認爲Ruby on Rails可以快速執行。
對我有何建議?
謝謝。
山姆
因爲這是一個龐大的問題,這個答案是一個社區的wiki,隨意提高這個答案
網站的加載速度取決於許多因素:語言,框架,數據庫,CPU,內存,緩存,...
順便說一下,整個事情取決於更糟糕的元素。我不認爲Ruby或Rails是這裏的限制因素。
要開始您可以看到Spree是否是一個好的框架。以下是Spree在不同主機上的基準測試,並與純Rails應用程序進行比較:http://blog.endpoint.com/2011/05/spree-performance-benchmarking.html
正如您所看到的,這將從0.5秒變爲6秒!你可以注意到Spree版本在性能上有很大的提升。不幸的是,最新版本不在基準測試中......您應該嘗試找到最新的基準。您還可以注意到,原始軌道應用乍一看,速度更快。
接下來你必須檢查你的硬件:你的服務器是什麼?專用與否?多少個CPU和RAM?你會增加嗎?
我覺得DB也是一件需要注意的電子商務案例,因爲我可以想象你有很多產品。因此,您可以測試不同的數據庫引擎,並在Spree社區中查看推薦的引擎。
接下來,您可以感興趣您在緩存:http://guides.rubyonrails.org/caching_with_rails.html
走得更遠,你可以嘗試一些memcached的商店爲你把你的緩存RAM:http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-memcachestore
查找最慢的動作(New Relic的是偉大的,他們的RPM精簡版是免費的,雖然它只比去年30分鐘報告)和分析,看看他們是渲染重或DB-重。我的猜測是你的情況是數據庫沉重。 如果是這種情況,那麼通過預先加載優化查詢,消除n + 1個問題,並確保只返回相關數據,例如,如果您只需要用戶名和電子郵件,請不要使用User.all。然後,你應該緩存任何你可以,例如實時數據並不重要。
欲瞭解更多信息:http://asciicasts.com/episodes/202-active-record-queries-in-rails-3 和 http://synaptify.com/?p=106
你有幾個選擇這裏,在前面提到的答案。
對於客戶端性能改進,我強烈建議WebPagetest,YSlow和雅虎的Best Practices for Speeding Up Your Web Site作爲良好的資源。
對於嚴格的Rails性能,我建議Rails'關於緩存的文檔(已經建議)。我經常使用Rails低級緩存。整頁緩存可應用於某些類型的頁面,但如果庫存波動很大,則通常不適用於產品頁面。
Spree有一些性能問題,因爲它是一種通用的電子商務解決方案,具有許多功能,您可能不會使用該增加的擴展。確保你有數據庫索引,並考慮追求分析服務器進程,以查看最多運行最多的時間。很可能你需要重寫某些Spree的功能來加快速度。
最後,谷歌認爲0.25秒是快速網站的標準。
使用更快的服務器,緩存等?你爲什麼認爲Rails速度不快? – Dogbert 2012-02-03 08:00:39
網絡性能往往是一個瓶頸,因此您需要仔細優化資源和延遲負載,而這些並不是真正需要的。 Chrome Developer Tools(或Safari Web Inspector)中的審計面板,PageSpeed,YSlow等工具將爲您完成這項任務。 – 2012-02-03 08:11:04