Какой наиболее эффективный способ сохранения данных во время поэтапной регистрации?

Как реализовать пошаговую регистрацию на сайте наиболее эффективным способом? Есть несколько вариантов, которые можно рассмотреть:
1. Сохранение каждого шага в базе данных: это может привести к большому количеству лишних запросов к БД.
2. Хранение информации о каждом шаге в сессии: это может быть удобным способом, но может привести к проблемам с масштабированием и безопасностью.
3. Использование LocalStorage: это может предоставить локальное хранение информации на стороне клиента, но может быть недоступно для некоторых пользователей или страдать от проблем с безопасностью.
4. Использование куки: это еще один способ хранения информации, который может быть удобным, но может страдать от проблем с безопасностью и лимитами хранения данных.
Какие у вас мнения по этому поводу? Какие подводные камни и нюансы нужно учитывать при реализации пошаговой регистрации? Заранее спасибо за ваши идеи и рекомендации.
  • 16 сентября 2023 г. 10:47
Ответы на вопрос 5
Наиболее эффективным способом сохранения данных во время пошаговой регистрации будет зависеть от конкретных требований и ограничений проекта. Однако, следует принимать во внимание следующие факторы:

1. База данных: сохранение каждого шага в базе данных может быть эффективным способом, но с большим количеством запросов к БД. Однако, с помощью оптимизации запросов и кэширования можно снизить нагрузку на базу данных.

2. Сессии: хранение информации о каждом шаге в сессии может быть удобным способом, но может вызвать проблемы с масштабированием и безопасностью. Например, сессии должны быть управляемыми и их данные должны быть защищены от несанкционированного доступа.

3. LocalStorage: использование LocalStorage позволяет хранить информацию на стороне клиента, что может быть удобным и не требовать дополнительной нагрузки на сервер. Однако, LocalStorage может быть недоступным для некоторых пользователей или страдать от проблем с безопасностью, так как данные могут быть легко изменены или удалены.

4. Куки: использование куки также может быть удобным способом хранения информации, но могут быть проблемы с безопасностью и ограничениями по объему хранимых данных.

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

При выборе наиболее подходящего способа сохранения данных во время пошаговой регистрации, рекомендуется провести тестирование и оценить производительность, безопасность и удобство использования каждого варианта в соответствии с требованиями проекта.
при сохранении в БД главная проблема не "бессмысленные запросы" (это какая-о дурацкая фобия, взять самый редко используемый функционал, и трястись над каждым запросом) а что потом делать с незавершенными регистрациями. 
Хранить на клиенте - это гонять уже введенные данные туда-сюда.
Сессия для этого и придумана, чтобы хранить данные сеанса.
Но в целом способ зависит от конкретных обстоятельств, например банки всегда сохраняют только в базу, чтобы потом дожать клиента, который оставил контакт на первом шаге.
Поддержу Ипатьев .  Вы хотите избавиться от 3-х запросов, чтобы что? У вас реально база рухнет от 3 запроса × на 10 регистраций в день? 

Можно конечно и на клиенте хранить, но смысл? Как минимум нужно валидировать каждый шаг. Вот прошёл юзер 10 шагов, отправил данные, а у вас fatal error на беке, такой email уже есть в базе. Усложняем логику в 10 раз, отправляем клиента на шаг #22, где он мыло вводил?

В общем это не оптимизация, это выстрел себе в ногу на ровном месте. Ещё и юзера бесить будете
Всем привет. Хочу сделать пошаговую регистрацию на сайте. Как бы это сделать правильнее?

Если есть возможность - просите минимум, например почту и пароль, в идеале - вообще через google, или еще что-то подобное, fb например.
Уже потом запрашивайте данные которые вам нужны для конкретных действий.
С точки зрения пользовательского опыта вероятно это будет самый лучший сценарий.

1. После каждого шага сохранять в БД? Много запросов бессмысленных

Оптимизируйте там, где есть узкое горлышко, а не там где его нет.

2. Хранить в сессии?
3. LocalStorage?

Вам стоит точно решить, как вы взаимодействуете с фронтом. Если это грубого говоря отдельное приложение с каким-нить rest или подобным взаимодействием - LocalStorage, или SessionStorage. Если старый добрый серверный рендеринг - сессии.

4. Куки?

нет.
Всем привет. Хочу сделать пошаговую регистрацию на сайте. Как бы это сделать правильнее?
Нет рецепта для общего случая. Всегда есть нюансы, если вы делаете что-то чуть в сторону от классики.

1. После каждого шага сохранять в БД? Много запросов бессмысленных
Ого, много это сколько? И почему бессмысленных? Вы же осмысленные данные туда пишете?

У кого, какое мнение? Где какие подводные камни/нюансы?
Мнение: С таким описанием нихрена не посоветуешь. По конкретным шагам можно что-то обсуждать.
В целом же: Если первый шаг позволяет ввести все данные необходимые для входа в аккаунт, то писать надо в бд, ну и соответственно выслать письмо с подтверждением. В бд можно писать так же стадию прохождения. Если остальные пункты не являются критическими для функционала, можно предлагать при следующем логине дозаполнить данные, основываясь на записанном номере стадии. Ну или просот сразу перекидывать на нужную фазу, если она является необходимой.
Похожие вопросы