关于Rails上的红宝石:对于潜在的高流量站点,我应该使用haml还是erb或erubis?

关于Rails上的红宝石:对于潜在的高流量站点,我应该使用haml还是erb或erubis?

Should I use haml or erb or erubis for potentially high traffic site?

我最近一直在和Haml一起玩,并且非常喜欢结果代码在我看来……开发人员的方式。 我也不太担心设计师能够使用或更改它...我们是一个很小的团队。

就是说,在我们认为一个项目上开始工作会产生大量的流量(谁没有?)。 我担心有些事情我不了解haml。 erb有什么可以做的吗? 随着项目的发展,haml是否会产生负面影响? 还有其他事情要考虑吗?

最后...哈姆尔如何与erubis快速比较? 我看到它现在应该击败了erb和eruby ...

谢谢!


哈姆岩石。我没有看到任何最新的性能数据,但是最近这些时间已经非常接近erb了。我认为,如果您打开丑陋的模式(这可以防止缩进),它可能比erb更快。我们每天使用Haml进行的网页浏览量为280万。

在Haml源代码树中签入了一个基准测试器:
http://github.com/nex3/haml/tree/master/test

2009年11月更新

Nathan(Haml的主要开发人员)在他的博客上发布了一些Haml 2.2基准测试。您可以在此处看到确切的数字,但总之:

  • 普通(精美打印)模式=比ERB慢2.8倍
  • 丑陋模式(未添加漂亮标签)=等于ERB

您可以通过将Haml::Template::options[:ugly] = true放在初始化程序或环境文件中来启用丑陋模式。请注意,丑陋模式并不是真的丑陋-生成的HTML实际上比ERB更漂亮-只是缩进不好。


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

您应该问自己的问题是:您喜欢写Haml吗?它会提高您的生产力吗?然后,您可以轻松决定。


我喜欢HAML,因为它是轻松编写结构化HTML的好工具,并且通常使用起来很有趣。但这与根据站点可能产生的流量选择工具几乎没有关系。

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

您可以在此处找到一些演示文稿,以展示如何提高网站性能:

  • 迈克尔·科齐亚斯基(Michael Koziarski)在2008年巴黎Rails大会上谈及Rails的表现

  • 杰里米·肯珀(Jeremy Kemper)在RailsConf EU'08上谈论Rails的性能

我所知道的学习如何正确使用Rails缓存的最佳位置是:

  • Rails缓存PeepCode截屏

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

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


如果您从编码的角度喜欢haml的工作方式,则不必过多担心模板引擎的性能。 (不过,正如您所指出的,它现在很快。)它肯定可以生成其他引擎可以输出的任何输出。

通常,将精力投入到设置缓存上比担心性能问题所在的模板引擎更为有利。


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

特别是在不需要动态模板的情况下。然后,最大的减速将受到红宝石解析红宝石的速度的限制。

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

一次编译,多次使用。

哦,如果您真的很在意速度,那么Tenjin也许也值得一看(与erubis相同的创作者)

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


好吧,Haml的性能在每个版本中都不断提高。目前在可接受的位置吗?这是由您决定的(我倾向于说"是",但这是您根据需要选择的)。如果您喜欢模板及其提供的可读性,那么性能下降(可忽略不计)应该确实是您做出决定的最终因素。

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

如果您对Haml(和m_r)还有其他更具体的问题,我敢肯定,内森非常乐于回答。可以通过Jabber / XMPP和电子邮件与他联系。他的联系信息可以在这里找到。


推荐阅读