г. Санкт-Петербург
Войти
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности
Заказать звонок
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности

RSS
Оптимизация работы со скидками в Битрикс при повышении количества пользователей с разными типами скидок, Необходимость в оптимизации возникает уже после того, как количество активных пользователей переваливает за 100.
 

Необходимость в оптимизации возникает уже после того, как количество активных пользователей переваливает за 100.

В стандартном варианте скидки (правила корзины) считаются динамически, при каждом обновлении страницы.

И при повышении числа пользователей b2b портала или корзины до 1000

Приводит к фактически полному зависанию работы корзины даже на самых мощных конфигурациях

При этом наличие задаваемых вручную скидок, а также мультивалютности еще более осложняет ситуацию со скоростью отображения страницы.

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

В итоге, механизм получения данных и последующего вывода выглядит следующим образом:

1. При выгрузке скидок из 1с для каждого пользователя рассчитываются все его цены из созданных для него правил, и складываются в отдельную таблицу (в текущем варианте в MySQL, работа с другими хранилищами - дело отдельного этапа).

Цены рассчитываются достаточно продолжительное время в сравнении с адекватным временем отображения страницы, поэтому это наиболее удачное место для осуществления данной операции.

2. В компоненте Каталога корзины осуществляется выборка этих данных в JS-переменную, а в JS-компоненте - вывод.

При этом данные выбираются один раз, а дальше кешируются.


Механизм кэширования может пересматриваться в дальнейшем, в зависимости от насущных потребностей в скорости отображения. В текущем варианте используется APC cache, поскольку это стандартный механизм, идущий вместе с самим PHP.

Для работы кэша необходимо поставить соответствующее расширение.
В CentOS 7, на которой построена BitrixVM, это команды:

yum install php-pecl-apcu.x86_64
yum install php-pecl-apcu-bc.x86_64

3. В дальнейшем при росте числа пользователей планируется осуществлять мониторинг и доработки в соответствии с полученными данными (отдельным этапом).