Насколько сильно снижается производительность node.js при запуске его через php функцию exec()?

Привет, хочу организовать серверный рендеринг на laravel+vue.js
Попался мне на глаза вот такой пакет https://github.com/spatie/laravel-server-side-rendering
В целом все удобно, но смущает один момент - пакет по сути при каждой загрузке запускает
<?php $result = exec('/usr/local/bin/node file.js')
то есть node.js не висит как сервер, а каждый раз запускается заново.
Подскажите, насколько сильно от этого может пострадать производительность? Какие подводные камни могут меня ожидать? Стоит ли вообще с этим связываться?
  • Вопрос задан
  • 1095 просмотров
Решения вопроса 1
bingo347
@bingo347
Бородатый программер
time node -p '(process.memoryUsage().heapUsed/1048576).toFixed(2)+"M"'
запускаем на своем сервере и любуемся оверхедом от запуска голой ноды...
у меня (нода v10.15.3) вот так:
3.71M

real	0m0,076s
user	0m0,064s
sys	0m0,012s


теперь давайте добавим сюда работу vue-ssr, который не просто так рекомендует прикручивать кэш...

вообщем думайте сами, насколько для Вас оверхед ждать 100-200мс и тратить по ~5МБ на заопрос
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Xuxicheta
@Xuxicheta
инженер
exec запускает внешнюю программу. Производительность ноды никак не меняется.
Смотря как запускать рендер, но вообще нода не должна висеть как сервер, она рендерит все один раз и завершается, это просто скрипт.
Хотя если вы на каждый чих будете ререндерить весь проект, то это явно не лучшее решение.
А вот рендерить при изменении исходных данных это нормально.
Ответ написан
xPomaHx
@xPomaHx
1vs9
+0.1s в среднем, из за долгого пуска v8 а это дофига.
Ответ написан
Tantacula
@Tantacula
Ларавельщик, витающий в небесах.
А вы точно уверены, что этот процесс запускается каждый раз при запросе к серверу, а не компилируется один раз после изменений, как вьюхи ларавел?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы