У меня есть несколько вопросов для опытных разработчиков magento:
Можно ли улучшить скорость мыльного API magento v1? При запросе данных magento быстро компилирует простую информацию, такую как адрес клиента и т. Д., За 1,5 секунды.
Для запроса нескольких возможных соответствующих узлов данных может быстро потребоваться около 5-7 секунд.
Сейчас я уже выполняю эти запросы через запросы AJAX, поэтому интерфейс страницы загружается быстро, но было бы неплохо улучшить скорость.
Или было бы лучше написать свое собственное заявление, чтобы дать мне соответствующую информацию непосредственно из базы данных magento? Это не так сложно для БД, и если я делаю прямой запрос, он загружается в течение одной сотой секунды с результатами ...
Единственное соображение, которое у меня есть с этим вариантом:
- Что если magento обновит и изменит схему базы данных?
- Или настройка базы данных magento относительно обновлений безопасна / совместима?
У кого-нибудь есть опыт с этим и их истории успеха или неудачи? Мне нужно принять информированное решение, чтобы знать, как действовать.
источник
Ответы:
Я столкнулся именно с этой проблемой, и я обошел ее, просто работая непосредственно с объектами Magento. Я думаю, что есть проблема изменений кода и всего, что вы описываете, но большая часть моего кода написана в одноразовых скриптах для загрузки старых данных, и тому подобное, так что это была небольшая проблема. Непосредственная работа с объектами Magento также имела побочное преимущество, заключающееся в том, что я выучил внутреннее немного больше, чем я мог бы с помощью только SOAP API - конечно, более крутая кривая обучения, но я чувствую себя немного более осведомленным о том, что происходит. там, чем если бы я придерживался только когда-либо используя SOAP API.
Другой вариант, который мы пробовали, - кэширование данных с использованием Memcached (или что-то вроде Redis тоже будет работать), хотя теперь вам нужно беспокоиться о том, как часто обновлять кэш, откуда и тому подобное. Но он действительно позволяет получить данные намного быстрее. Я думаю, будет ли это хороший вариант, будет зависеть от того, что вы пытаетесь сделать.
источник
$order = Mage::getModel('sales/order')->load($order_id);
в принципе. В этой ветке форума есть один или два фрагмента, которые могут проиллюстрировать больше: magentocommerce.com/boards/viewthread/18629Ускорение SOAP API будет трудно. Вы всегда можете добавить какое-то дополнительное оборудование (более быстрый сервер MySQL) или запустить хранилище на NginX, которое, когда вам потребуются несколько миллисекунд, NginX лучше обрабатывает большое количество запросов http. Кэширование не очень поможет, так как ответ на большинство вызовов будет отличаться каждый раз.
Создание собственного API с нуля с использованием моделей Magento Core может оказаться самым быстрым решением, поскольку вы можете настроить код для повышения производительности, загружая только то, что вам нужно. Исходя из моего опыта использования базовых классов, между версиями 1.5 и 1.7 ничего не изменилось.
Редактировать: я забыл, небольшая быстрая победа может возникнуть из-за включения сжатия вывода gzip в файле htaccess или php.ini или, если вам это нужно, переместите API-интерфейс SOAP на другой сервер, использующий ту же базу данных, если база данных MySQL не узкое место
источник