Корзина-призрак: мистические исчезновения товаров в Аспро
— Я только что добавил товар в корзину! Честное слово!
— Вы уверены? Мы ничего не находим...
Знакомая история? Клиент клянется, что положил товар, а корзина пуста. Или еще веселее: добавил, прошел полкорзины, отвлекся на минуту, вернулся — а корзина девственно чиста, будто там ничего и не было.
Полтергейст? Происки конкурентов? Козни домового?
Спокойно. Никакой мистики. Просто корзина в Битрикс — штука хитрая. И сейчас мы расскажем, почему товары-призраки исчезают и как их приземлить обратно.
Анатомия корзины: как она устроена
Корзина неавторизованного пользователя — это почти как список покупок на салфетке. Она живет ровно до тех пор, пока вы не выбросите салфетку (или пока ветром не сдует).
Технически корзина привязана к трем вещам:
- ID сессии (который живет, пока открыт браузер)
- Кукам (маленькие файлики, которые браузер периодически чистит)
- f_user (служебная сущность в базе, привязанная к сессии)
Как только что-то из этой цепочки рвется — корзина растворяется в воздухе. Прямо как носок в стиральной машине.
7 причин, почему корзина становится призраком
1. Сессия умерла раньше времени
В настройках PHP живет параметр session.gc_maxlifetime. Если он маленький (например, 1440 секунд — это 24 минуты), то ровно через 24 минуты после захода на сайт корзина пользователя... исчезнет. Даже если он активно выбирает товары.
Лечение: Идти в php.ini или .htaccess и увеличивать время жизни сессии. 86400 секунд (сутки) — норм.
2. Куки сказали «прощай»
Современные браузеры любят «защищать» пользователей и чистить куки. Особенно если на сайте что-то не так с настройками SameSite, Secure или HttpOnly.
Лечение: Проверить, что куки настроены правильно и не слетают при переходе между страницами.
3. Композитный кеш съел корзину
Композит в Битрикс — штука полезная для скорости. Но иногда он кеширует страницы с корзиной так, что корзина на закешированной странице... старая. Или пустая. Или вообще не та.
Лечение: Настроить динамические зоны (Dynamic Zones) для корзины, чтобы она не кешировалась.
4. VPN включился — корзина отключилась
Пользователь зашел на сайт через московский IP, положил товары в корзину, потом включил VPN для проверки почты — и всё. IP сменился, сессия умерла, корзина испарилась.
Лечение: Никакое. Это особенности протокола HTTP. Можно только предупреждать пользователей, но кто ж их слушает.
5. Балансировщик отправил на другой сервер
Если сайт живет на нескольких серверах, а сессии хранятся в файлах на конкретном сервере, то при переключении на другой сервер корзина остается на первом. И всё — привет, призрак.
Лечение: Хранить сессии в Redis или Memcached, доступном всем серверам.
6. Ручки шаблона криво написали
Иногда разработчики в шаблоне Аспро забывают передавать параметры сессии или ломают ID корзины в шаблоне компонента.
Лечение: Искать ошибки в кастомных файлах шаблона.
7. Модуль «Очистка корзины» перестарался
Если стоит модуль, который чистит старые корзины, и у него неправильные настройки — он может удалять корзины, которые еще нужны.
Лечение: Проверить настройки модулей, связанных с корзиной.
Как найти призрака: диагностика
Прежде чем вызывать экзорциста, сделайте три простых шага:
- Зайдите в админку → «Магазин» → «Корзины покупателей». Посмотрите, есть ли там корзина пользователя, который жалуется. Если есть — проблема на его стороне (VPN, куки). Если нет — проблема на вашей.
- Проверьте время жизни сессии через phpinfo().
- Отключите композит временно и попросите пользователя повторить. Если корзина перестала исчезать — проблема в композите.
Профилактика: правила гигиены корзины
Чтобы корзина не превращалась в призрака, соблюдайте простые правила:
- Выставьте адекватное время жизни сессии (минимум 86400 секунд)
- Настройте композит с динамическими зонами для корзины
- Если сайт на нескольких серверах — храните сессии в Redis
- При любых подозрениях на баг — смотрите в сторону недавних обновлений (они любят ломать корзину)
- Не используйте корзину как место для хранения снаряжения — она для этого не предназначена
Когда вызывать профессионалов
Если корзина ведет себя как полтергейст — то появляется, то исчезает, то показывает чужие товары — значит, пора звонить специалистам.
Мы с призраками на короткой ноге. Проведем экзорцизм корзины, продиагностируем сессии, пропишем правильные настройки и вернем товары на место. Клиенты снова смогут покупать, а корзина перестанет пугать пользователей по ночам.
Звоните, пока корзина не утащила последний заказ в потусторонний мир.
Нужна помощь с настройкой корзины?
Если вы столкнулись с проблемой исчезающих товаров или хотите провести аудит текущих настроек, наши специалисты готовы помочь. Проведем диагностику, найдем причину и вернем корзину к жизни.
Заказать аудит интеграции*Свяжемся с вами в течение 24 часов для уточнения деталей
