J'ai plusieurs questions pour les développeurs expérimentés de magento:
Est-il possible d'améliorer la vitesse de l'api soap de magento v1? Lors de la demande de données, magento coûte rapidement 1,5 seconde pour compiler des informations simples comme l'adresse du client, etc.
La demande de plusieurs nœuds de données pertinents possibles peut rapidement coûter environ 5 à 7 secondes.
Maintenant, je fais déjà ces demandes via des demandes AJAX, donc l'interface de page se charge rapidement, mais une amélioration de la vitesse serait bien.
Ou serait-il préférable d'écrire ma propre application pour me donner les informations pertinentes directement à partir de la base de données magento? Ce n'est pas si compliqué qu'une base de données et si je fais une requête directe, elle se charge en moins d'un centième de seconde avec les résultats ...
La seule considération que j'ai avec cette option est:
- Que faire si magento met à jour et modifie son schéma de base de données?
- Ou la configuration de la base de données de magento est-elle relativement à niveau / compatible avec la baisse?
Quelqu'un at-il une expérience avec cela et leurs histoires de réussite ou d'échec? J'ai besoin de faire une décision éclairée pour savoir comment procéder.
la source
Réponses:
J'ai rencontré exactement ce problème de manière approfondie, et j'ai contourné ce problème en travaillant directement avec des objets Magento. Je pense qu'il y a le souci des changements de code et ainsi de suite que vous décrivez, mais une grande partie de mon code est dans des scripts à usage unique pour charger de vieilles données, des choses comme ça, donc c'était une préoccupation mineure. Travailler directement avec les objets Magento a également eu l'avantage secondaire de me faire apprendre les composants internes un peu plus que je ne le ferais qu'avec l'API SOAP également - une courbe d'apprentissage plus abrupte à coup sûr, mais je me sens un peu plus informé sur ce qui se passe là-dedans que si je me suis contenté de ne jamais utiliser l'API SOAP.
Une autre option que nous avons essayée était la mise en cache des données à l'aide de Memcached (ou quelque chose comme Redis fonctionnerait aussi), bien que vous deviez maintenant vous soucier de la fréquence de mise à jour du cache, d'où, et des choses comme ça. Mais, il atteint l'objectif de récupérer les données beaucoup plus rapidement. Je pense que ce soit une bonne option ou non dépendra exactement de ce que vous essayez de faire.
la source
$order = Mage::getModel('sales/order')->load($order_id);
, basiquement. Il y a un ou deux extraitsAccélérer l'API SOAP va être difficile. Vous pouvez toujours ajouter du matériel supplémentaire (serveur MySQL plus rapide) ou exécuter le magasin sur NginX qui, lorsque vous aurez quelques millisecondes, NginX est meilleur pour gérer de grandes quantités de requêtes http. La mise en cache n'aiderait pas vraiment tant que la réponse de la plupart des appels différera à chaque fois.
Construire votre propre API à partir de zéro à l'aide de modèles Magento Core pourrait être la solution la plus rapide car vous pouvez modifier le code pour améliorer les performances en chargeant uniquement ce dont vous avez besoin. D'après mon expérience en utilisant les classes de base, peu de choses ont changé entre, disons, la version 1.5 et 1.7
Edit: j'ai oublié, une petite victoire rapide pourrait venir de l'activation de la compression de sortie gzip dans le fichier htaccess ou php.ini ou si vous en avez envie, déplacez l'API SOAP vers un autre serveur en utilisant la même base de données si la base de données MySQL n'est pas le goulot d'étranglement
la source