2006-11-06

Need for Speed

关键字: erb 渲染
Erb的渲染一直有人说慢,而c版本的eruby始终没有和Rails整合起来。终于一个东东横空出世了:Erubis, 宣称有Erb3倍的速度并和eruby比肩,而且还是纯ruby的。



安装很傻瓜:
1.安装gem
gem install erubis

2.然后在application.rb里加些整合代码(Erubis是独立于Rails的):
*放到enivronment.rb里也有效果的
require 'erubis/helper/rails'
suffix = 'erubis' 
ActionView::Base.register_template_handler(suffix, Erubis::Helper::RailsTemplate)
#Erubis::Helper::RailsTemplate.engine_class = Erubis::EscapedEruby ## or Erubis::PI::Eruby
#Erubis::Helper::RailsTemplate.default_properties = { :escape=>true, :escapefunc=>'h' }

被注释的是些默认设置除非你想改
3.最后把rhtml后缀改成erubis
4.另外layout里如果用yield的得改成老式的@content_for_layout :(

我随便找了个稍微复杂点的页面,发现大概提速50%,满意了。

更多细节参见Erubis主页
竟然还有java版本。。。
评论
jack 2006-11-06
robbin 写道
等有空的时候测试一下再说。其实现在ruby在服务器上执行效率还可以,瓶颈都在数据库端,优化erb不会有多少改善。


ror的数据库操作优化的确是一个问题,select一条记录的语句真是超多。
cookoo 2006-11-06
qiezi 写道
为什么是加在application.rb里呢?controllers里的那个?感觉会不会有点怪异?一般这类设置是放在environment.rb里吧。

被你这么一说我去看了一下代码,没什么特别插入到controller的东西。我试了下挪到environment.rb里也是一样生效的。作者有三个地方都这么写,我写信去问问吧。
robbin 2006-11-06
等有空的时候测试一下再说。其实现在ruby在服务器上执行效率还可以,瓶颈都在数据库端,优化erb不会有多少改善。
qiezi 2006-11-06
为什么是加在application.rb里呢?controllers里的那个?感觉会不会有点怪异?一般这类设置是放在environment.rb里吧。
jack 2006-11-06
好消息,嘿嘿这下子,代码烂点也没事了。robbin能不能测试下实际使用效果?

不过提升速度,总是有些代价的,估计cpu消耗应该大不少。
cookoo
搜索本博客
我的相册
1e04c0dc-42a1-45a4-b392-aa82faafa7ea-thumb
20059805856241
共 10 张
存档
最新评论
评论排行榜