Дизайн обработки событий веб-клиента - PullRequest
0 голосов
/ 01 августа 2011

Добрый день,

Я думаю, это скорее дизайн веб-сервиса, чем вопрос программирования. Я постараюсь объяснить, чего я хочу достичь. В примере у меня есть 3 поля со списком (например, размер, цвет, текстура) на странице, которые зависят друг от друга. Мы можем выбрать их только по очереди (например, 1-> 2-> 3). После выбора значения поля со списком, следующее поле со списком заполняется + включается, и мы можем выбрать из него тоже.

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

  1. Это когда мы заходим на страницу и загружаемый JavaScript отправляет сообщение с запросом данных для заполнения этих полей со списком. Возвращаемый ответ представляет собой пакетные данные всех вариантов (JSON), которые анализируются и обрабатываются JavaScript с каждым клиентом выбора.
  2. Страница загружается только с первым полем со списком, а остальные заполняются значениями по умолчанию. Каждый раз, когда клиент выбирает значение, запускается соответствующее событие (ajax, которое приводит к последующему получению), чтобы заполнить / обработать следующие поля со списком в зависимости от выбора.

Сам я вижу, что первое довольно сложно, и значение пакета может быть очень большим с точки зрения, если есть много вариантов выбора для каждого значения. А второй, похоже, слишком много бесполезных запросов к серверу, что, я думаю, может привести к перегрузке сервера. Что вы думаете об этих решениях? Концепция в порядке? И стоит ли внедрять первое решение вместо второго, даже сложнее? Если что-то, что вы не понимаете в моем объяснении, пожалуйста, спросите, я постараюсь объяснить более подробно.

1 Ответ

2 голосов
/ 02 августа 2011

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

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

Для решения проблемы, в которой я использовал различные методы кэширования, чтобы оптимизировать это поведение.

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

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