Снова про организанцию корзины в интернет магазине. Нужна критика

Danon_13

Новичок
Приветствую
поиском уже воспользовался и прочитал темы но ответа так и не нашел

вопрос к более опытным программистам
хочу реализовать корзину с запоминанием того, что добавил НЕЗАРЕГИСТРИРОВАННЫЙ пользователь в корзину

вижу 2 пути реализации


1. реализация через сессию но минус в том, что спустя N минут после бездействия сессия удалится а сохранять сессию на всю жизнь не хочу (про то что можно увеличить срок жизни сессии знаю)

2. реализация через БД и куки - создать уникальный ID все товары положенные в корзину добавлять в БД ну а этот ID добавить в куки браузера ну и дублировать корзину в сессию
как только сессия закончится а пользователь заново зайдет на сайт то из кук поднять ID и по ID выцепить его старые покупки


2й вариант "сложнее" чем первый но он теоретически захломит бд кучей заказов которые по идее так и останутся в корзине и не будут заказаны
это же касается и кнопки избранное
хотя например раз в неделю можно запускать скрипт который для не зарегистрированных пользователей удалит и положенные в корзину товары и избранное


вопрос в том что лучше реализовывать?
сам склоняюсь ко 2му варианту и буду благодарен за критику этого решения
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@Danon_13, Вариант нормальный только один - делается через куку и таблицу в базе данных, таблицу чистим раз в N часов/дней/лет короном. Все остальное с дублированием данных в сессию - забудь.
 

ksnk

прохожий
"автоматическая" регистрация любого посетителя сайта, который положил товар в корзину.
В долговременную (год?) куку укладывается следующий id покупателя, к значению куки привязывается корзина в базе данных. Тут могут быть варианты - товары можно хранить в localstore покупателя, хотя эффективнее и для статистики удобнее - в базе данных. Зависит, естественно, от размера магазина и политики магазина - ориентирован ли он на постоянных покупателей, или основной доход приносят разовые покупатели.
Покупатель может в любой момент авторизоваться, тогда временная корзина сливается с корзиной покупателя. Информация о пользователе позволяет заполнить информацию о доставке или просмотреть свою историю заказов.
Чтобы база не забивалась фейковыми корзинами - неавторизованные корзины без заказа можно чистить раз в месяц-полмесяца-неделю.
Саму регистрацию можно совместить с оформлением заказа - email или телефон пользователя вполне пойдут как идентификатор пользователя.
 

WMix

герр M:)ller
Партнер клуба
Допустим у тебя не амазон но 1000 корзин на день, 365.000 в год, лимон в три, 10 лимонов в 30 лет. В чем проблема? Тем более понимаешь что можно чистить. (Будет 1000 корзин в день, будет круто)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
еще можно хранить в IndexedDB - хранилище в браузере
 
Сверху