我需要为我的客户开发一个电子商务网站。 他希望它非常快(每页1.25秒或更少)。 我有我的标准 - 3秒。 所以1.25秒非常具有挑战性。
他向我展示了一个加载速度非常快的网站。 http://www.papayaclothing.com/shop/ 令人印象深刻。
我将使用Spree电子商务解决方案(Ruby on Rails)进行开发。 但是,我不认为Ruby on Rails可以快速执行。
对我有什么建议吗?
感谢。
萨姆
答案 0 :(得分:9)
因为这是一个广泛的主题,这个答案是一个社区维基,随时可以改进这个答案
网站加载速度取决于很多因素:语言,框架,数据库,CPU,RAM,缓存......
顺便说一句,整个事情取决于更糟糕的因素。我不认为Ruby或Rails是限制因素。
首先,您可以看到Spree是否是一个很好的框架。以下是Spree在不同托管中的基准,并与纯Rails应用程序进行比较:http://blog.endpoint.com/2011/05/spree-performance-benchmarking.html
如你所见,这从0.5秒到6秒!您可以注意到Spree版本对性能的影响非常大。不幸的是,最新版本不在基准测试中...您应该尝试找到最新的基准测试。您还可以注意到,初始轨道应用程序乍一看更快。
接下来,您必须检查您的硬件:您的服务器是什么?专用还是不专用?多少CPU和RAM?你能增加吗?
我认为数据库也是一个值得关注的电子商务案例,因为我可以想象你有很多产品。因此,您可以测试不同的数据库引擎,并在Spree社区中查看推荐的内容。
接下来,您可以对缓存感兴趣:http://guides.rubyonrails.org/caching_with_rails.html
为了更进一步,你可以尝试一些memcached商店,将你的缓存放入RAM:http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-memcachestore
答案 1 :(得分:3)
查找最慢的动作(New Relic很棒,而且他们的RPM Lite是免费的,虽然它只报告过去30分钟)并分析它们是渲染重还是数据库重。我的猜测是你的情况是db-heavy。 如果是这种情况,那么使用急切加载优化您的查询,消除n + 1个问题,并确保仅返回相关数据,例如如果您只需要用户名和电子邮件,请不要使用User.all。 然后你应该缓存任何你可以,例如实时数据并不重要。
更多信息:http://asciicasts.com/episodes/202-active-record-queries-in-rails-3 和 http://synaptify.com/?p=106
答案 2 :(得分:2)
这里有几个选项,在之前的答案中提到过。
对于客户端性能改进,我强烈建议WebPagetest,YSlow和Yahoo Best Practices for Speeding Up Your Web Site作为良好的资源。
对于严格的Rails性能,我建议使用Rails'缓存文档(已经建议)。我经常使用Rails低级缓存。整页缓存可以应用于某些类型的页面,但如果您的库存量大幅波动,通常不适用于产品页面。
Spree存在一些性能问题,因为它是一种通用的电子商务解决方案,具有许多功能,您可能无法使用这些功能来增加膨胀。确保您拥有数据库索引,并考虑使用性能分析服务器进程来查看运行最多的内容。花费最多的时间。很可能你需要覆盖一些Spree的功能来加快速度。
最后,谷歌认为0.25秒是快速网站的标准。