Корзина интернет-магазина: данные в cookies, или в базе

Не могу решить, где лучше хранить данные о незавершённых покупках пользователя в интернет-магазине?
Класть товары корзины в сессию, в cookies, или хранить их в отдельной таблице в базе, которую периодически чистить..?
Прошёлся по крупным магазинам(amazon, ozon) — в cookies они оставляют только идентификатор сессии.
  • Вопрос задан
  • 21618 просмотров
Пригласить эксперта
Ответы на вопрос 8
Bartez
@Bartez
Раньше было принято хранить корзину в куках.
Сейчас хорошей практикой является хранение корзины в БД.

Преимущества хранения в БД:
1) Корзина может храниться сколько угодно долго.
2) Корзина не теряется, если покупатель зашёл с другого браузера/компьютера.
Ответ написан
@mind3
Насколько я помню, сессия работает до закрытия браузера и в зависимости от настроек на сервере.
Минусы:
  • у пользователя сессия может удалиться при автоочистке сессий
  • если хранение сессий производится на жестком диске и автоочистка не настроена, можете столкнуться с ситуацией когда у вас inode закончаться.
  • не гарантируется сохранение состояния после закрытия браузера


Лучше использовать такую практику:
  • для пользователя создавать в бд корзину если не создана.
  • далее получив id сохранять его в cookie или localstorage.
  • далее мы синхронизируем корзину ajax запросами - добавили товар, отправили запрос в бд.

Из плюсов данного подхода:
  • товары в корзине будут оставаться при повторном заходе пользователя(главное не забыть при установке cookie время хранения необходимое поставить)
  • появляется возможность собрать статистику по корзинам пользователей, которые не сделали заказ
Ответ написан
homm
@homm
Храню корзину месяц в сессии. Регистрации нет, поэтому 2-й пункт из перечисленных Bartez невозможен.
Если кроме количества товаров и id вам понадобится хранить еще вские конфигурации товаров, или другую инфу, её будет намного удобнее держать в структурах языка, сериализуемых в сессии, чем в таблицах базы.
Ответ написан
Shvonder
@Shvonder
А я храню в куках и ниче, нормально. Минусы озвучили. Плюсы — мгновенное добавление в корзину и мгновенное изменение количества товаров/суммы. Храню в виде json. Что бы кука переполнилась надо очень много положить в корзину
Ответ написан
Bartez
@Bartez
homm, «Храню корзину месяц в сессии»
Это как?
Ответ написан
@dzenmoon
Лучше корзину хранить на стороне сервера. База, NoSQL, файлы — это уже на выбор. Я бы посоветовал Redis, к примеру. Там уже есть слежение за актуальностью данных.
Ответ написан
Комментировать
yats
@yats
Корзину — информацию о товарах храним в БД — это удобно. Нужную информацию выводим в сессию.
Ответ написан
Комментировать
@lstdmi
решил попробовать добавление в корзину делать через куки, а когда уже при запросе страницы корзины или других страниц, читать куки на сервере и сразу класть в сессию сервера.. ну и на сервере очищать куки браузера..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы