Автозаполнение на стороне сервера VS передачи данных - PullRequest
0 голосов
/ 12 ноября 2018

Мне нужно реализовать автозаполнение на стороне клиента. Данные передаются через сервер. Это можно сделать несколькими способами. Два, о которых я подумал:

  • Реализация автозаполнения на стороне сервера : В этом случае я могу думать о проблемах эффективности. Эффективно ли звонить на сервер и возвращать каждую клавишу?
  • Передача данных : Существует возможность передачи всех данных с сервера на клиент при первой необходимости, но клиенту, который не использует автозаполнение, это не нужно. Кроме того, не будет ли тяжело передать все данные сразу?

Я использую nodejs на сервере и angular cli в клиенте.

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

1 Ответ

0 голосов
/ 12 ноября 2018

1.) Реализация автоматического завершения на стороне сервера, безусловно, будет иметь некоторые проблемы с эффективностью, особенно если вы говорите с бэкэндом при каждом событии нажатия клавиши. Но это можно улучшить, установив некоторые основные правила, такие как
a.) Вызывайте API только в том случае, если пользователь вводит более 2 слов. То же самое должно произойти, если пользователь вводит более 20 слов, вам не следует искать данные.
б.) Если вы знаете, какой король данных сохраняется, например, только числовой (не разрешать пользователю вводить алфавиты)
c.) Всегда ограничивайте данные при извлечении их из источника данных, чтобы гарантировать, что ограниченное число записей выбирается для отображения.

2.) Передача данных также будет работать только в том случае, если у вас ограниченный объем данных, скажем, несколько тысяч записей.
а.) Не пытайтесь получить все данные, если вы уже знаете, что данные будут огромными. Если вы упомянули, что пользователь может или не может использовать эту функцию, это будет ненужный вызов API.
б) Если данные ограничены, этот подход будет лучше, чем первый подход, поскольку раз и навсегда вы будете хранить данные на стороне клиента, и больше не будет ненужных обращений к серверу.

...