Подтвердить что ты не робот

Должен ли я использовать haml или erb или erubis для потенциально высокого трафика?

Я недавно играю с Haml и очень люблю то, как получившийся код выглядит для меня... разработчиком. Я также не слишком беспокоюсь о том, что дизайнер может потреблять или менять его... мы небольшая команда.

Тем не менее, начиная работу над проектом, который, по нашему мнению, будет генерировать довольно много трафика (кто этого не делает?). Я обеспокоен тем, что есть вещи, которые я просто не знаю о хамле. Есть ли что-нибудь, что erb может сделать, что haml не может? У haml есть негативный эффект по мере роста проекта? Есть ли другие вещи, которые следует учитывать?

И наконец... как Хамль сравнивает скорость с эрубисом? Я вижу, что он якобы бьет erb и eruby сейчас...

Спасибо!

4b9b3361

Ответ 1

Камни Хамла. Я не видел недавних номеров производительности, но в наши дни это довольно близко. Я думаю, что это может быть быстрее, чем erb, если вы включите уродливый режим (который предотвращает довольно отступы). Мы делаем 2,8 миллиона просмотров страниц в день с Haml.

В исходное дерево Haml проверяется контрольный тест: http://github.com/nex3/haml/tree/master/test

Обновление в ноябре 2009 года

Натан (главный разработчик Haml) опубликовал некоторые тесты Haml 2.2 в своем блоге. Вы можете видеть точные цифры там, но короче:

  • Нормальный (довольно печатный) режим = 2,8 раза медленнее, чем ERB
  • Ужасный режим (добавлено не более добавленных вкладок) = равно ERB

Вы можете включить уродливый режим, поместив Haml::Template::options[:ugly] = true в файл инициализации или среды. Обратите внимание, что уродливый режим на самом деле не такой уродливый - полученный HTML на самом деле намного красивее, чем ERB - он просто не имеет отступов.

Ответ 2

Если вы используете Rails, разница в производительности между Haml и erubis пренебрежимо мала: шаблоны компилируются и кэшируются после первого попадания. Объедините это с фрагментацией и кешированием страниц, и вы можете быть уверены, что представления не являются узким местом вашего приложения.

Вопрос, который вы должны задать себе: вам нравится писать Haml? Это делает вас более продуктивными? Тогда вы можете решить легче.

Ответ 3

Мне нравится HAML, потому что это хороший инструмент для простого написания структурированного HTML, и, как правило, это просто радость. Но это очень мало связано с выбором инструмента, основанного на количестве трафика, которое может иметь сайт.

Если вы беспокоитесь о трафике, вам следует беспокоиться о правильном использовании кеширования. И тогда вам необходимо применить принципы общей производительности веб-приложений - результат заключается в том, что у вас будут очень быстрые ответы на загрузку страниц. Это то, что действительно нужно веб-сайту с высоким трафиком.

Несколько презентаций, которые показывают, как улучшить производительность сайта, можно найти здесь:

И лучшее место, которое я знаю, чтобы научиться правильно использовать кеширование рельсов, это:

Ответ 4

Я думаю, что это полностью вопрос личных предпочтений и ремонтопригодности. Для меня Haml упрощает чтение и понимание шаблонов, и производительность очень приемлема. В конце концов, язык шаблонов вряд ли будет местом, где вам нужно оптимизировать - более вероятные запросы к базе данных, просмотр или кэширование объектов и т.д.

Однако, в случае шаблонов ERb, вы получите лучшую производительность по существу бесплатно, если вы используете erubis.

Ответ 5

Если вам нравится, как haml работает с точки зрения кодирования, не беспокойтесь о производительности процессора шаблонов слишком много. (Хотя, как вы уже указали, теперь он быстрый.) Он может определенно генерировать любой вывод, который могут использовать другие двигатели.

Как правило, более выгодно вкладывать свою энергию в настройку кеширования, чем беспокоиться о вашем шаблоне, где у вас проблемы с производительностью.

Ответ 6

Я лично рекомендовал бы нам erubis в предварительно скомпилированных шаблонах.

Особенно, если нет необходимости в динамическом шаблоне. Тогда ваше самое большое замедление будет ограничено скоростью, с которой рубин может анализировать рубин.

Я бы установил небольшое задание cron, которое просто контролирует измененные исходные шаблоны и автоматически компилирует их при изменении, которое вы можете отключить, когда оно не используется.

Скомпилируйте один раз, используйте много.

О, и если вы действительно обеспокоены скоростью, Tenjin, возможно, тоже стоит посмотреть (те же создатели, что и erubis).

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

Ответ 7

Хорошо, производительность Haml продолжает улучшаться с каждым выпуском. Является ли это приемлемым местом в настоящее время? Это вам решать (я склонен сказать "Да", но это ваш выбор, исходя из ваших потребностей). Если вам нравятся шаблоны и их читаемость, то падение производительности (как бы ни было незначительно) действительно должно быть последним фактором вашего решения.

Одним из других инструментов, которые вы должны использовать в сочетании с Haml, является make_resourceful, еще одна жемчужина хранителя Haml (Nathan Weizenbaum), которая упрощает много вещей RESTful в приложении Rails.

Если у вас есть какие-то дальнейшие, более конкретные вопросы о Haml (и m_r), я уверен, что Натан будет более чем счастлив ответить на них. Его можно связаться через Jabber/XMPP и по электронной почте. Его контактную информацию можно найти здесь.