Да, у тебя расчет выполняет модель в PHP, а из яваскрипта ты делаешь запрос к этому расчету аяксом.
Главное чтобы твой аякс не вызывал загрузку всего сайта, а просто делал расчет, тогда все будет ну оччень быстро. Как можно это понять - сделай запрос на несуществующий URL - если сайт не подрубается - ты получишь ответ "сервер не отвечает" или стандартный .htaccess-ный Forbidden, а если подрубается - то это будет генерация страницы типа "такой страницы нету".
К примеру сравнить и рассчитать 2000 товаров, запросив сохранив результаты в гугл докс по ходу, и получив справочники из того же гугл докс, и все это выдав в виде json массива, сохранив кеши - занимает чуть больше 10 сек, и это без использования быстрых функций - просто чем было написано.
Если не подгружать весь фреймворк, чтобы вызвать действие "рассчитать", а работать с существующей базой из кеша товаров по ценам - расчет будет мгновенно делаться и не будет так набившего оскомину "лоадера" на 10 секунд расчета трех товаров из корзины. Впрочем точный запрос по id товаров в базу отработает так же быстро, если его написать с нужными join-ами, а не "запрос-запрос-запрос-объединить на PHP-рассчитать-объединить-запрос-проверить".
Впрочем, можно и действительно на ноде какой-нибудь. Главное помнить, что когда расчет делает сервер - он в работе, то есть нагрузка, когда расчет делает клиент - он может прислать тебе хрень разную (хакеры, да да), которую ты никак не проверишь, не произведя расчет на сервере.