Tengo varias preguntas para desarrolladores experimentados de magento:
¿Es posible mejorar la velocidad de la api de jabón magento v1? Al solicitar datos, magento tarda rápidamente 1,5 segundos en recopilar información simple como la dirección del cliente, etc.
Solicitar múltiples posibles nodos de datos relevantes puede costar rápidamente unos 5-7 segundos.
Ahora ya estoy haciendo esas solicitudes a través de solicitudes AJAX para que la interfaz de la página se cargue rápidamente, pero una mejora de la velocidad sería buena.
¿O sería mejor escribir mi propia aplicación para darme la información relevante directamente desde el magento db? No es tan complicado de un db y si hago una consulta directa, se carga en una centésima de segundo con los resultados ...
La única consideración que tengo con esa opción es:
- ¿Qué pasa si magento actualiza y cambia su esquema de base de datos?
- ¿O la configuración de la base de datos de magento es relativamente segura o compatible con versiones anteriores?
¿Alguien tiene alguna experiencia con esto y sus historias de éxito o fracaso? Necesito tomar una decisión informada para poder saber cómo proceder.
fuente
Respuestas:
Me he encontrado con este problema de manera exhaustiva y lo he solucionado simplemente trabajando directamente con objetos de Magento. Creo que existe la preocupación de los cambios de código y otras cosas que usted describe, pero gran parte de mi código está en scripts de un solo uso para cargar datos antiguos, cosas así, por lo que fue una preocupación menor. Trabajar con los objetos de Magento directamente también tuvo el beneficio adicional de hacerme aprender un poco más de lo interno de lo que lo haría con solo la API SOAP, una curva de aprendizaje más pronunciada, sin duda, pero me siento un poco más informado sobre lo que está sucediendo. allí que si me hubiera quedado solo usando la API SOAP.
Otra opción que probamos fue almacenar en caché los datos usando Memcached (o algo así como Redis también funcionaría), aunque ahora debe preocuparse por la frecuencia con la que se actualiza el caché, desde dónde y cosas así. Pero, logra el objetivo de recuperar datos mucho, mucho más rápido. Creo que si esta es una buena opción dependerá exactamente de lo que intente hacer.
fuente
$order = Mage::getModel('sales/order')->load($order_id);
Básicamente. Hay un fragmento o dos en este hilo del foro que podrían ilustrar más: magentocommerce.com/boards/viewthread/18629Acelerar la API de SOAP será difícil. Siempre puede agregar un poco de hardware adicional (servidor MySQL más rápido) o ejecutar la tienda en NginX, que cuando tenga algunos milisegundos, NginX es mejor para manejar grandes cantidades de solicitudes http. El almacenamiento en caché realmente no ayudaría mucho ya que la respuesta de la mayoría de las llamadas diferirá cada vez.
Construir su propia API desde cero utilizando los modelos Magento Core podría ser la solución más rápida porque puede modificar el código para mejorar el rendimiento cargando exactamente lo que necesita. Desde mi experiencia usando las clases principales, no ha cambiado mucho entre la versión 1.5 y 1.7
Editar: se me olvidó, una pequeña ganancia rápida podría venir al activar la compresión de salida gzip en el archivo htaccess o php.ini o si lo desea, mueva la API SOAP a otro servidor usando la misma base de datos si la base de datos MySQL no está el cuello de botella
fuente