Гибридная одностраничная прикладная архитектура (перегружена?)

Пожалуйста, извините за длину этого поста!

Я строю довольно сложный продукт, который состоит из следующего:

  1. Веб-приложение
  2. Веб-сервер с PHP MVC Backend
  3. Мобильные приложения (iOS, Android, Windows)
  4. REST API Server (PHP)
  5. Сервер БД (MySQL)

* Обратите внимание, что фреймворки не используются, а иногда JQuery используется для простоты.

Моя проблема связана с веб-приложением. Из всего приложения может быть около десятка страниц, которые на самом деле обслуживаются веб-сервером с некоторыми предварительно заполненными данными. Страницы имеют вкладки навигации, где отображается контент / данные. Эти разделы вкладок будут загружаться динамически, если / когда пользователь выберет вкладку. Из соображений производительности я не могу предварительно загрузить все данные и заполнять их только по запросу.

В настоящее время все мои запросы к API от веб-приложения направляются через веб-сервер, на котором хранится мой пользовательский сеанс.

Вот как будет выглядеть цикл запроса.

  1. Пользователь веб-приложения запрашивает страницу
  2. Веб-сервер вызывает API и заполняет данные из ответа API
  3. Веб-сервер обслуживает запрашиваемую страницу
  4. Пользователь веб-приложения нажимает на вкладку на странице, данные должны быть загружены
  5. Веб-приложение отправляет HTTP-запрос AJAX на веб-сервер
  6. Веб-сервер вызывает API запрос / получение данных
  7. Веб-сервер отправляет JSON обратно на вызов AJAX
  8. Веб-приложение заполняет данные на вкладке

Мой вопрос, если это слишком перегружено. Я знаю, что мог бы пропустить веб-сервер и просто вызвать API, но из-за того, что API не имеет управления сессиями, это не имеет смысла. При каждом вызове API мне нужно знать, вошел ли пользователь в систему, чтобы разрешить публикацию, размещение или удаление вызовов, поэтому кажется неправильным пропускать веб-сервер.

Я сбился с пути или это рекомендуемый подход?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]