Для веб-сайта с высоким уровнем взаимодействия с пользователем, лучше ли рендеринг на стороне клиента или рендеринг на стороне сервера? - PullRequest
1 голос
/ 29 марта 2020

Я разрабатываю веб-сайт, на котором пользователь входит в свою учетную запись, вводит данные в таблицу (я использую Tabulator), а затем данные в таблице сохраняются (я использую MongoDB Atlas для хранения данных ). Веб-сайт имеет разные подстраницы, в которых данные взаимодействуют с другими данными, хранящимися на другой подстранице (например, на веб-сайте есть подстраницы «Продажи» и «Инвентаризация»), поэтому, когда пользователь совершает новую продажу, инвентарь уменьшается на сумму продаж. ). По сути, это веб-сайт, на котором пользователи постоянно выполняют операции CRUD над своими данными.

Сегодня веб-сайт отображается на стороне клиента. Каждая подстраница веб-сайта имеет свой собственный отдельный файл HTML и отдельный файл Javascript, с одним файлом Node для обработки всего взаимодействия с Atlas для всех подстраниц. Я только использую и тестирую веб-страницу с моего локального P C с одной или двумя различными учетными записями пользователей, и все работает нормально, как есть (каждый пользователь сохраняет и работает со своими собственными данными).

Теперь, учитывая, что я планирую развернуть веб-сайт (в домене или Heroku) и, возможно, получить сотни или тысячи различных пользователей, я искал следующие варианты:

  • Чтобы продолжать использовать простую клиентскую сторону HTML, как я ее использовал.
  • Рендеринг HTML в ответ от узла
  • Использование механизма шаблонов от узла

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

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

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

Будет ли узкое место в необработанной нисходящей полосе пропускания? Будет ли большой выигрыш, если вы уменьшите ваш ответ на вызовы API и запросы страниц? Это возможно, но Heroku и другие хорошие поставщики хостов хорошо справляются с пропускной способностью. Кроме того, https сжимает данные при шифровании, поэтому повторяющиеся html не так дороги, как кажется. Поэтому, вероятно, приемлемо заставить ваш сервер отображать много html.

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

Возникнет ли конфликт между процессами, которые принимают ваши данные, и процессами, которые их используют? Вероятно. Но детали этого утверждения трудно предсказать.

tl; dr. У тебя эта штука работает. Там нет необходимости переделывать это сейчас. Разверните то, что у вас есть. Пригласите своих пользователей и послушайте их. Обратите внимание на то, как он работает, и сконцентрируйте свои настройки и рефакторинг на тех областях, где они оказываются необходимыми.

0 голосов
/ 29 марта 2020

Я бы предложил взглянуть на такие проекты, как nuxt js для vue js фреймворка или next js, если вы предпочитаете реагирующую фреймворк.

AFAIK, они сочетают в себе лучшее из рендеринга на стороне сервера и на стороне клиента.

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

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

Вот учебник из цифрового океана о простом приложении, сочетающем в себе django бэкэнд с nuxt js frontend: Как создать универсальное приложение с Nuxt. js и Django.

Эта статья даст вам некоторые преимущества использования nuxt js для вашего веб-приложения.

Несмотря на это, сейчас было бы лучше не беспокоиться о масштабируемости. Это одна из главных причин неудачи стартапов . Сосредоточьтесь на создании решения ваших клиентов (пользователей) в первую очередь и масштабируйте, когда вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...