对于潜在的高流量站点,我应该使用haml还是erb或者erubis?
我最近一直在和Haml一起玩,并且非常喜欢结果代码在我看来...开发人员的方式。我也不太担心设计师能够使用或者更改它...我们是一个很小的团队。
就是说,在我们认为一个项目上开始工作会产生大量的流量(谁没有?)。我担心有些事情我不了解haml。 erb有什么可以做的吗?随着项目的发展,haml是否会产生负面影响?还有其他需要考虑的事情吗?
最后...哈姆尔如何与erubis快速比较?我看到它现在应该击败了erb和eruby ...
谢谢!
解决方案
我个人会在预编译的模板中向我们推荐erubis。
特别是在不需要动态模板的情况下。然后,最大的减速将受到红宝石解析红宝石的速度的限制。
我可能会设置一个小型的cron作业,该作业仅监视更改的源模板并在更改时自动编译它们,不使用时可以关闭它们。
一次编译,多次使用。
哦,如果我们真的很在意速度,那么Tenjin也许也值得一看(与erubis相同的创作者)
http://www.kuwata-lab.com/tenjin/rbtenjin-examples.html
我认为这完全是个人喜好和可维护性的问题。对我来说,Haml使模板更易于阅读和理解,并且性能是可以接受的。最后,模板语言不太可能是我们需要优化的地方-更可能是数据库查询,视图或者对象缓存等。
但是,对于ERb模板,如果使用erubis,则基本上可以免费获得更好的性能。
如果使用Rails,则Haml和erubis之间的性能差异可以忽略不计:无论如何,模板会在第一次命中后进行编译和缓存。将其与片段和页面缓存结合使用,我们可以放心,视图不是应用程序的性能瓶颈。
我们应该问自己的问题是:我们喜欢写Haml吗?它使我们生产力更高吗?然后,我们可以轻松决定。
哈姆岩石。我没有看到任何最新的性能数据,但是最近这些时间已经非常接近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更漂亮,只是缩进不好。
好吧,Haml的性能在每个发行版中都在不断提高。目前在可接受的位置吗?这是由我们决定的(我倾向于说"是",但这是我们根据需要选择的)。如果我们喜欢模板及其提供的可读性,那么性能下降(可忽略不计)应该确实是我们做出决定的最终因素。
我们应该考虑与Haml结合使用的其他工具之一是make_resourceful,这是Haml的维护者(Nathan Weizenbaum)的另一个杰作,它简化了Rails应用程序中的许多RESTful内容。
如果我们对Haml(和m_r)还有其他更具体的问题,我相信Nathan乐于回答。可以通过Jabber / XMPP和电子邮件与他联系。他的联系信息可以在这里找到。
如果我们从编码的角度喜欢haml的工作方式,则不必过多担心模板引擎的性能。 (不过,正如我们所指出的,它现在很快。)它肯定可以生成其他引擎可以输出的任何输出。
通常,将精力投入到设置缓存上要比担心性能问题的模板引擎更为有利。
我喜欢HAML,因为它是轻松编写结构化HTML的好工具,并且通常使用起来很有趣。但这与根据站点可能产生的流量选择工具几乎没有关系。
如果我们担心流量,则应该担心正确使用缓存。然后,我们需要应用一般Web应用程序性能的原理,结果是我们将对页面加载具有超级快速的响应。高流量的网站真正需要的是什么。
我们可以在此处找到一些演示文稿,以展示如何提高网站性能:
- 迈克尔·科兹亚斯基(Michael Koziarski)在2008年巴黎Rails大会上谈及Rails的表现
- 杰里米·肯珀(Jeremy Kemper)在RailsConf EU'08上谈论Rails的性能
我所知道的学习如何正确使用Rails缓存的最佳位置是:
- Rails缓存PeepCode截屏