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

Какие шаги можно предпринять для улучшения производительности рендеринга jade-шаблона в express с помощью nodejs

Фон

jade синтаксис является удивительным, но я хотел посмотреть, как это повлияло на производительность.

Итак, я создал одностраничное приложение и использовал сканер apache, чтобы сравнить его пропускную способность с помощью jade для рендеринга страницы с использованием строки в памяти. Не было переменных, поэтому это было чисто академическое сравнение.

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

Я использую node 0.8, а версия 2.5.11 в экспресс-режиме с режимом кэширования вида явно установлена ​​на true.

Результаты сканера apache: https://dl.dropbox.com/u/3737990/jade/jade.png https://dl.dropbox.com/u/3737990/jade/memory.png

4b9b3361

Ответ 1

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

Вместо этого гораздо важнее сравнить шаблоны движков, так как они все средства в одном и том же виде (динамически отображаемый HTML).

Здесь мы видим, что Jade - это самый медленный язык шаблонов. Вероятно, есть много факторов, которые влияют на то, почему это так, но основная проблема заключается в том, что Jade не был разработан для скорости. Если вам нужна чрезвычайно высокая производительность, doT был разработан для скорости.

Ответ 2

Строка в памяти - это самая быстрая вещь, которую вы можете сделать, поэтому сравнение с ней не очень значимо. Шаблон никогда не будет таким быстрым, как строка concat. Настройка в режиме производства - это самая важная вещь, которую вы можете сделать с точки зрения производительности.

Ответ 3

(добавление этого дополнительного бита информации, поскольку это кажется одним из первых хитов поисковой системы при поиске "экспресс-нефрита" )

У меня была такая же проблема с приложением для создания nodejs. Проблема в том, что jade работает по умолчанию в режиме разработки, который не является тем, что вы хотите для производства, так как это снова и снова перекомпилирует все шаблоны, теряя процессор и память.

Решение состоит в том, чтобы запустить ваше приложение с помощью NODE_ENV=production node app.js, это предотвратит цикл перекомпиляции нефрита и, возможно, вызовет некоторые другие улучшения в перформансе.

Обратите внимание, что это не делает jade быстрее, это просто мешает ему делать ненужную работу и убивать ваш процессор.