Тормозит кнопка добавления В корзину, у всех

Модуль Деловые линии у меня тормозит безбожно - 11-13 секунд ему нужно на обработку

Я оставил только CДЭК. Деловые и пек тормозит сильно.

Я так понял @myway уже за меня ответил:

Я отключил все стандартные модули расчёта стоимости\срока доставки (BoxBerry, СДЭК и т.д.) и настроил всё это через Edost. Больше не тормозит.

Думаю в текущих версиях CS-Cart это уже поправили.

Действительно, в текущей версии вместо

if (!empty($cart['calculate_shipping'])) {

стоит

if ($cart['calculate_shipping']) {

Так как мы не можем перейти пока на новую версию, попробовал заменить, посмотрю, что получится.

1 лайк

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

Решение есть, Ну и изменяя эти файлы после обновления они будут затёрты, надеюсь в будущих версиях это исправят, ну и соответственно изменяя эти файл вы берёте всю ответственность на себя.

Надо отредактировать 2 файла:

  • файл app/controllers/frontend/checkout.php примерно на 69 строчке внутри условия $mode == ‘add’

     fn_calculate_cart_content($cart, $auth, 'E', true, 'F', true);
    

поменять букву ‘E’ на ‘S’

  • файл app/functions/fn.cart.php, соответственно внутри функции fn_calculate_cart_content надо закомментировать код в 2 местах и добавить 1 условие:

вот это закомменитровать (скорее всего разработчики это в будущем удалят):

// FIXME: Backward compatibility: If the 'calculate_shipping' property is true, shipping calculation will be forced
    //if ($cart['calculate_shipping'] === true) {
    //    $calculate_shipping = 'A';
    //}

и вот это:

    // If shipping methods were changed, shipping recalculation is forced
    // Registry::registerCache(['checkout', $shipping_cache_key], $shipping_cache_tables, Registry::cacheLevel('user'));
    // if ($calculate_shipping === 'S' && !Registry::isExist('calculated_shipping_rates')) {
    //     $calculate_shipping = 'A';
    // }

а так же изменить условие примерно на 3715 строчке с такого:

if ($cart['calculate_shipping']) {

на такое:

if ($cart['calculate_shipping'] && $calculate_shipping != 'S') {

Тогда при добавлении в корзину товара расчёта доставки не будет, соответственно и тормоза тоже должный пропасть. И когда вы заходите в корзину или переходите на страницу оформления заказа, уже только там будет происходить расчёт стоимости доставки. Кайфуйте.

11 лайков

Ещё в файле app/controllers/frontend/checkout.php примерно на 569 строчке внутри условия $mode == ‘checkout’ поменять строчку:

$shipping_calculation_type = fn_checkout_get_shippping_calculation_type($cart, $is_location_changed);

на

// $shipping_calculation_type = fn_checkout_get_shippping_calculation_type($cart, $is_location_changed);
$shipping_calculation_type = 'A';

на всякий случай. Так как функция fn_checkout_get_shippping_calculation_type возвращает либо A либо S. А нам надо обязательно чтобы при заходе в корзину всегда 1 раз рассчитались все цены на доставку.

5 лайков

@ikoshkin, @imac обратите, пожалуйста, внимание. Ну это только в CS-Cart добавление товара в корзину визуально происходит так долго, что отпадает желание, что либо дальше покупать в магазине, если такой же товар есть в другом магазине по той же цене. Во всех CMS добавление товара в корзину происходит моментально. Почему в CS-Cart так реализовано все? Могли бы вы улучшить экспириенс взаимодействия пользователя с сайтом? Например, все необходимые функции после добавления товара в корзину выполнять в фоне, незаметно для пользователя, а уведомление о добавлении товара в корзину, чтобы показывалось моментально.

10 лайков

Эта проблема уже достала… Уже 4 года на cs-cart и все никак не исправят!!!

3 лайка

Добавлю немного позитива - скорее всего зависит от конфигурации, настроек сервера и CS-Cart У клиентов такого не замечал. В принципе даже на старых версиях с кучей костылей вполне нормальная скорость добавления в корзину.

1 лайк

У меня тоже это было одно время, тормозило до нескольких секунд. С тех пор убрал всплывающее окно подтверждения, перешёл на более мощный тариф на хостинге, обновлял версии Карта. Теперь всё нормально, но в чём причина, не известно.

Такой проблемы не замечаю. Всплывающее окошко притормаживает на доли секунды, не заметно.

Ну а что вы хотите. Это раньше было: сайт страницу отдал, браузер страницу показал. Сейчас страница это не просто текст, это программный код, способный к интерактивности без перезагрузки (получения новой страницы). Движок сайта - это компилятор программного кода, который по определенным внешним условиям собирает этот код, а браузер - интерпретатор, который обрабатывает и взаимодействует с этим кодом. Так что многое зависит еще и от возможностей компьютера пользователя, который работает с вашим магазином. Другой вопрос: отсеивать пользователей со старыми маломощными компьютерами или ноутбуками (мобильные не берем, там можно турбо страницы), или нет - решать уже самостоятельно

Лютейшим образом неимоверно долго грузятся товары, если подключено отображение способом и стоимости доставки на карточке товара, доходит до почти 10 секунд!
bandicam%202021-01-27%2013-28-27-939

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

Всем настоятельно рекомендую убрать галочку в модуле “Карты и геолокация”:

Надо искать альтернативные модули (буду пробовать eDost).

Дело не в модуле же, а в запросах к сторонним сервисам.

Обновление:
Выключил расчёт стоимости доставки на карточке товара. Выключил парочку модулей, которые косвенно могли бы влиять на скорость работы.
Результат тот же: добавляю товар из категории, даже не открываю карточку товара. Тормоза лютые, по несколько секунд! Как это возможно вообще?
%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0%20%D0%B2%20%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D1%83

1 лайк

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

а причём тут служба доставки и добавление товаров в корзину. Доставка должна высчитываться на странице оформления заказа, не раньше. Я даже предварительный расчёт доставки в корзине отключил.

Оставлю комментирование этого для cs-cart, но я рад что вы оценили мой совет.

Да даже если всё выключить - всё-равно долго. Уж хотя бы если выключен попап - надо мгновенно добавлять на фронте в корзину(плюсануть циферку у корзины в js и не показывать крутилку ожидания отправки), а отправку запроса на сервер делать фоново и незаметно для пользователя. Всё-равно пока клиент соображает куда там жать и наводит мышку на корзину - оно и успеет отработать. Будет мгновенная реакция фронтенда, возможность нажать на добавку следующего товара и пофиг, пусть оно хоть целую секунду там думает при каждом добавлении каждого товара.

6 лайков

Только в CS-Cart добавление в корзину требует ожидания от посетителя. В других CMS не встречал такого поведения. Можно по этой фишке и крутилке ajax сразу отличать магазины, созданные на CS-Cart, ну и еще вдобавок отличительная черта большинства магазинов на CS-Cart - это один шаблонный дизайн, никакой эстетики.

3 лайка