11/06/2006

ERubis :快三倍的 ERB

這個網頁看到的好東西。一個語言一開始速度不佳沒關係,只要一紅起來,一定會有人幫你加快速度的。JAVA 一開始是這樣沒錯,看起來 Ruby on Rails 漸漸要開始脫離速度尚可的名聲了。Webrick 太慢了,所以 Zed Shaw 寫了 Mongrel 。ERB 速度尚可,就有人寫 Erubis ,讓你的 ERB 可以飛快的執行沒有負擔。

Erubis 是用 Ruby 寫的,但是速度居然比用 C 寫的 eruby 還要快。最重要的是,他可以不用改寫現有的 Rails code ,就直接讓 Rails 使用,這就相當的可怕了。下圖是 ERB 跟 Erubis 的比較圖我們可以發現到他的速度幾乎是 ERb 的三倍快。

安裝

至於安裝方式的部份,我們用 gem 來安裝
gem i erubis

  1. 你可以在 application.rb 或是 config/enviroments/ 裡面加入
    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' }
  2. 將你的 .rthml 改成 .erubis
  3. 最後要注意,layout 裡面 yield 的部份要改成以前的 @content_for_layout

測試結果

根據我的測試,的確感覺比較快,但是快多少很難說,畢竟 render 所佔的部份不重。相容度的地方,目前一般頁面完全沒有問題, 除了 @content_for_layout 跟修改 template 檔名以外
,完全不用改寫 code 。Cache 跟 AJAX 的部份還不確定有沒有問題,如果沒問題,那這個東西一定會大紅起來。

題外話,這個東西給我的感覺,想做成一個 Univeral 的 template engine ,不只支援 Ruby ,PHP,JAVA ,Javascript,C,Scheme 都有支援,不過支援程度還很小兒科啦@@!

沒有留言: