我是否应该将haml或erb或erubis用于潜在的高流量网站?

时间:2008-09-18 19:08:17

标签: ruby-on-rails ruby haml erb eruby

我最近一直在和Haml一起玩,真的很喜欢结果代码给我看的方式......开发人员。我也不太担心设计师能够消费或改变它......我们是一个小团队。

那就是说,开始研究一个我们认为会产生相当多流量的项目(谁没有?)。我担心有一些我不知道haml的事情。有没有什么可以做的哈哈不能?随着项目的发展,haml会产生负面影响吗?还有其他事情需要考虑吗?

最后...... Haml如何快速地与erubis比较?我看到它现在应该胜过erb和eruby ......

谢谢!

7 个答案:

答案 0 :(得分:45)

哈姆摇滚。我没有看到任何最近的性能数字,但这些天它非常接近erb。我认为如果你打开丑陋的模式(这会阻止漂亮的缩进)它可能比erb更快我们每天使用Haml进行280万次网页浏览。

在Haml源代码树中检查了一个基准测试程序: http://github.com/nex3/haml/tree/master/test

2009年11月更新

在他的博客上,Nathan(Haml的主要开发人员)published some Haml 2.2 benchmarks。您可以在那里看到确切的数字,但简而言之:

  • 正常(漂亮打印)模式=比ERB慢2.8倍
  • 丑陋模式(没有添加漂亮的标签)=等于ERB

您可以通过将Haml::Template::options[:ugly] = true放在初始值设定项或环境文件中来启用丑陋模式。请注意,丑陋的模式并不是那么难看 - 生成的HTML实际上比ERB更漂亮 - 它只是没有很好地缩进。

答案 1 :(得分:27)

如果你使用Rails,Haml和erubis之间的性能差异可以忽略不计:无论如何,模板在第一次命中后被编译和缓存。将此与片段和页面缓存相结合,您可以放心,视图不是应用程序的性能瓶颈。

你应该问自己的问题是:你喜欢写汉谟吗?它会让你更有效率吗?然后你可以更轻松地决定。

答案 2 :(得分:11)

我喜欢HAML,因为它是轻松编写结构化HTML的好工具,通常它只是一种使用的快乐。但它与根据网站可能拥有的流量选择工具几乎没什么关系。

如果您担心流量,您应该担心正确使用缓存。然后,您需要应用一般Web应用程序性能的原则 - 结果是您将对页面加载有超级敏捷的响应。这是一个高流量网站真正需要的。

可以在此处找到一些展示如何改善网站性能的演示文稿:

我所知道的最好的地方是学习如何正确使用rails缓存:

答案 3 :(得分:4)

我认为这完全取决于个人偏好和可维护性。对我来说,Haml使模板更易于阅读和理解,并且性能非常可接受。最后,模板语言不太可能是您需要优化的地方 - 更有可能是数据库查询,视图或对象缓存等。

但是,对于ERb模板,如果使用erubis,基本上可以免费获得更好的性能。

答案 4 :(得分:2)

如果你喜欢haml从编码的角度来看是如何工作的,那么不要太担心模板引擎的性能。 (尽管如你所指出的那样,它现在很快。)它绝对可以产生其他引擎可以输出的任何输出。

通常情况下,将精力投入设置缓存比担心性能问题的模板引擎更有利可图。

答案 5 :(得分:1)

我个人会在预编译模板中推荐我们的erubis。

特别是如果不需要动态模板。那么你最大的减速将受到红宝石解析红宝石的速度的限制。

我可能会设置一个小的cron作业,它只监视已更改的源模板,并自动编译它们在不使用时可以关闭它们。

编译一次,使用很多。

哦,如果你真的关心速度,天神也值得一看(与erubis一样的创作者)

http://www.kuwata-lab.com/tenjin/rbtenjin-examples.html

答案 6 :(得分:0)

嗯,每次发布时,Haml的性能都在不断提高。它目前在可接受的地方吗?那是你决定的(我倾向于说“是”,但这是你根据自己的需要选择的)。如果您喜欢模板和它们提供的可读性,那么性能下降(但可忽略不计)应该是您决定的最终因素。

你应该考虑与Haml一起使用的其他工具之一是make_resourceful,这是Haml(Nathan Weizenbaum)维护者的另一个宝石,它简化了Rails应用程序中的许多RESTful内容。

如果您对Haml(和m_r)有任何进一步的,更具体的问题,我相信Nathan会非常乐意回答这些问题。可以通过Jabber / XMPP和电子邮件联系他。他的联系信息可以在here找到。