Вот контекст: мы фактически используем базовый веб-стек, и наш сайт создает HTML-шаблоны с данными, которые он получает из базы данных напрямую.Как эффективно создавать HTML-шаблоны, когда все данные поступают из внутреннего API?
По нескольким причинам мы разделяем это на два проекта, каждый из которых будет отвечать за непосредственную связь с базой данных, а другой будет отвечать за отображение данных.
Чтобы сделать его простым, одним из них является API, другой - клиент.
Теперь мы задаемся вопросом, как мы должны спрашивать наш API для данных. Для нас существует 2 совершенно разных варианта:
- Один запрос, один маршрут, для одной страницы. Таким образом, мы получили бы огромный объект, который будет содержать все необходимое для создания соответствующей страницы.
- Один запрос для одного небольшого фрагмента данных. Например, на странице листинга мы сделали бы один запрос, чтобы получить данные о текущем зарегистрированном пользователе и отобразить его имя вместе с его аватаром, затем еще один запрос на получение каждой статьи, другой запрос на получение данных о текущей категории страниц. .
Некоторые, как первый вариант, мне совсем не нравится. Я чувствую, что у нас будет много избыточности. Я также не уверен, что один огромный запрос - это намного быстрее, чем X крошечных запросов. Мне также не нравится привязывать данные к определенной странице, так как я чувствую, что API должен быть (несколько) независимым от нашего веб-сайта.
Некоторым также не нравится второй вариант, они опасаются, что мы перезарядим сервер, сделав слишком много звонков, и я могу понять этот страх. Также похоже, что будет сложно правильно определить объем отправки, что не отправлять без какой-либо избыточности. Если мы отправляем только, что нужно для отображения страницы, разве это не первый вариант в конце? Но не посылает ненужную информацию в отходы?
Что вы, ребята, думаете?
Трудно дать вам объективный ответ, как часто, это зависит от. Это действительно зависит от того, чего вы пытаетесь достичь, в каком контексте будут использоваться данные.Первый вариант, вероятно, будет проще реализовать, и в зависимости от того, насколько вы умны, вы можете получать/обрабатывать данные, он может легко развиваться во втором варианте. Не рекомендуется много запросов, особенно с использованием текущей реализации HTTP и стоимости создания нового запроса, однако вы можете использовать HTTP-кеш, то же самое относится и к первому варианту. –
Вы также можете быть заинтересованы в [Реле] (https://facebook.github.io/relay/), который может быть вдохновляющим в вашем случае. –