web-dev-qa-db-ja.com

トラフィックが多い可能性のあるサイトには、haml、erb、またはerubisを使用する必要がありますか?

私は最近Hamlで遊んでいて、結果のコードが私に見える方法が本当に好きです...開発者。デザイナーがそれを消費したり変更したりできることについてもあまり心配していません...私たちは小さなチームです。

とは言うものの、プロジェクトの作業を開始すると、かなりのトラフィックが発生すると思われます(誰が発生しませんか?)。 hamlについて知らないことがあるのではないかと心配しています。 hamlではできないerbでできることはありますか?プロジェクトが成長するにつれて、hamlは悪影響を及ぼしますか?他に考慮すべきことはありますか?

そして最後に... Hamlはどのようにスピード的にエルビスと比較しますか?おそらく今はerbとerubyを打ち負かしているようです...

ありがとう!

47
John Wells

ハムルは揺れる。最近のパフォーマンスの数値は見ていませんが、最近はerbにかなり近いです。醜いモード(かなりのインデントを防ぐ)をオンにすると、erbよりも高速になる可能性があると思います。Hamlでは1日あたり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よりもはるかにきれいです-それはちょうどうまくインデントされていません。

45
casey

Railsを使用する場合、Hamlとerubisのパフォーマンスの違いはごくわずかです。いずれにせよ、テンプレートは最初のヒット後にコンパイルおよびキャッシュされます。これをフラグメントおよびページキャッシュと組み合わせると、ビューがアプリケーションのパフォーマンスのボトルネックではないので安心できます。

あなたが自分自身に問うべき質問は、Hamlを書くのが好きですか?それはあなたをより生産的にしますか?そうすれば、簡単に決めることができます。

27
mislav

HAMLは、構造化されたHTMLを簡単に作成するための優れたツールであり、一般的には使用するのが楽しいので、私はHAMLが大好きです。しかし、サイトのトラフィック量に基づいてツールを選択することとはほとんど関係がありません。

トラフィックが心配な場合は、キャッシュを適切に使用することを心配する必要があります。次に、一般的なWebアプリケーションのパフォーマンスの原則を適用する必要があります。その結果、ページの読み込みに対して非常に迅速な応答が得られます。これは、トラフィックの多いWebサイトが本当に必要としているものです。

Webサイトのパフォーマンスを向上させる方法を示すいくつかのプレゼンテーションは、次の場所にあります。

そして、Railsキャッシングを適切に使用する方法を学ぶために私が知っている最良の場所は:

11
Evgeny

それは完全に個人的な好みと保守性の問題だと思います。私にとって、Hamlはテンプレートを読みやすく、理解しやすくし、パフォーマンスは非常に許容範囲内です。結局、テンプレート言語が最適化する必要のある場所になる可能性は低くなります。データベースクエリ、ビューまたはオブジェクトのキャッシュなどが考えられます。

ただし、ERbテンプレートの場合、erubisを使用すると、基本的に無料でパフォーマンスが向上します。

4
seancribbs

コーディングの観点からhamlがどのように機能するかが気に入った場合は、テンプレートエンジンのパフォーマンスについてあまり心配する必要はありません。 (ただし、ご指摘のとおり、現在は高速です。)他のエンジンが生成できる出力を確実に生成できます。

一般に、パフォーマンスの問題が発生しているテンプレートエンジンについて心配するよりも、キャッシュの設定にエネルギーを投入する方が有益です。

2
Nate

個人的には、プリコンパイルされたテンプレートでerubisをお勧めします。

特に動的テンプレートの必要がない場合。その場合、最大の速度低下は、RubyがRubyを解析できる速度によって制限されます。

私はおそらく、変更されたソーステンプレートを監視し、それらをオンに自動コンパイルする小さなcronジョブを設定します。変更すると、使用していないときにオフにできます。

一度コンパイルして、たくさん使ってください。

ああ、そしてあなたが本当にスピードを心配しているなら、天神も一見の価値があるかもしれません(erubisと同じクリエイター)

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

1
Kent Fredric

そうですね、Hamlのパフォーマンスはリリースごとに向上し続けています。現時点で許容できる場所にありますか?それはあなたが決めることです(私は「はい」と言う傾向がありますが、それはあなたのニーズに基づいたあなたの選択です)。テンプレートとそれらが提供する読みやすさが気に入った場合は、パフォーマンスの低下(ただし無視できる程度)が実際に決定の最終的な要因になるはずです。

Hamlと組み合わせて使用​​することを検討する必要がある他のツールの1つはmake_resourcefulです。これは、Haml(Nathan Weizenbaum)のメンテナーによる別のgemで、Rails appのRESTfulなものの多くを簡素化します。

Haml(およびm_r)についてさらに具体的な質問がある場合は、Nathanが喜んで回答してくれると確信しています。彼には、Jabber/XMPPおよび電子メールで連絡できます。彼の連絡先情報は ここ で見つけることができます。

0
wfarr