Могу ли я сказать серверу nodeJs генерировать только динамический HTML (в то время как nginx отправляет статические данные), а затем автоматически отправлять клиенту? - PullRequest
0 голосов
/ 10 мая 2018

В основном я имел дело с Apache и php и начинаю играть с nginx и node. Мне действительно это нравится. Я начал с сервера Express, который обрабатывает отправку всех файлов сайта и рендеринг HTML (Handlebars).

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

Я знаю, что вы можете настроить прокси в nginx для перехода на сервер вашего узла. Но мой вопрос: вы можете смешать nginx и сервер nodejs, чтобы получить лучшее из обоих миров? Таким образом, пользователь запрашивает страницу из nginx. Nginx отправляет обратно все статические файлы для сайта. Когда он отправляет эти файлы, он может сказать серверу узла создать динамическое содержимое для страницы, которая была запрошена как HTML, а затем отправить ее пользователю как можно скорее. Я чувствую, что выполнение этого приведет к более быстрому времени загрузки страницы (возможно, я наивен, и это не будет иметь значения).

Другой вопрос, как будет происходить получение этого динамического HTML? Могу ли я настроить как получающую часть запроса GET для данных в javascript, чтобы, когда страница загружается, она была готова и ожидала динамический HTML-код, чтобы он мог взять его и поместить в правильные места. В противном случае, я чувствую, что если у меня будет сервер узла, отправляющий клиенту HTML, он просто примет это как новую страницу и удалит ранее загруженные статические данные nginx, которые он только что получил, и загрузит только динамические данные.

Дайте мне знать, что вы думаете.

1 Ответ

0 голосов
/ 10 мая 2018

Есть множество способов сделать это, все зависит от того, как вы хотите построить свой сервер.

Лично мне нравится писать на стороне клиента javascript, который отправляет http запросы на мой контент для сервера. Затем этот контент обрабатывается и отображается на веб-странице. Это называется AJAX. В jQuery есть методы, которые делают написание AJAX-запросов довольно простым. Вы можете прочитать об этом здесь .

Вообще говоря, серверу гораздо сложнее отправить клиентские ресурсы, которые они не запрашивали, чем клиенту сделать запрос на ресурс. Первый потребовал бы, чтобы сокет оставался открытым, прислушиваясь к сообщениям с сервера. Это не плохое решение, на самом деле это лучшее решение, когда ваш клиент и сервер должны постоянно поддерживать связь. Однако в сценарии, который вы описываете, клиенту имеет смысл запрашивать ресурсы.

...