Как работает SSR-Rendering в NODEJS и почему он отличается от PHP?

Добрый день.
Перевел проект с PHP на Nuxt ssr, производительность сильно просела, судя по ab тестам.
Добрые люди сказали, что nuxt (node) рендерит контент на сервере не также, как это делает PHP и проигрышь в производительности очевиден и оправдан. В nodejs для рендеринга работает рендер-функция и вообще эта технология гораздо сложнее, а поэтому медленнее.
Я всегда думал что работает это так:
- PHP принимает запрос, выполняет скрипт, "собирает" разметку и отдает браузеру.
- Nodejs всё делает примерно также. В случае с современными JS фреймворками (react, vue) выбор nodejs для серверного рендеринга обусловлен тем, что бОльшая часть кода на JavaScript будет выполняться на сервере, а код который не может быть выполнен на сервере (DOM, Window, XHR etc) должнен быть обработан в завимисости от того, где он запущен.
Ну то есть вместо nodejs можно было бы и PHP использовать для серверного рендеринга и тогда не было бы никакой разницы между серверным рендерингом и обычной (по старинке) генерации ответа на сервере, когда переход по страницам - это всегда новый запрос на сервер.
Объясните, пожалуйста, в чем разница между рендерингом на PHP и на Nodejs и почему второй гораздо менее производительый?
  • Вопрос задан
  • 4596 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
SSR-это запуск фронтендового js-фреймворка на ноде заранее,(вместо работы в браузере) и отдача клиенту того что получилось, вместе с фреймворком, дальше все это продолжает работать на клиенте.
на php этого просто нет.

почему второй гораздо менее производительый?

правильно вопрос звучит так "почему то что у меня на nodejs написано медленнее того что у меня было на php" ответ как вы понимаете зависит от того что именно у вас там написано. В целом рендеринг на ноде не медленнее рендеринга в php сам по себе. Может у вас так все настроено, может как раз ssr тормозит
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rockon404
@rockon404
Frontend Developer
Потому что на PHP вы максимум используете шустрый шаблонизатор.
Nuxt использует для рендера Vue, вычисления которого несколько сложней.

Ну то есть вместо nodejs можно было бы и PHP использовать для серверного рендеринга.

Хотите - используйте, но вы лишитесь преимуществ, которые дает изоморфный код.

Сравнивать производительность PHP и Node, в вашем случае, не корректно. Так как дело в конкретных инструментах которые вы используете.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы