Ich habe mehrere Fragen an erfahrene Magento-Entwickler:
Ist es möglich, die Geschwindigkeit der Magento v1 Seifen-API zu verbessern? Bei der Anforderung von Daten kostet es Magento schnell 1,5 Sekunden, einfache Informationen wie Kundenadresse usw. zusammenzustellen.
Das Anfordern mehrerer möglicher relevanter Datenknoten kann schnell etwa 5-7 Sekunden kosten.
Jetzt mache ich diese Anfragen bereits über AJAX-Anfragen, damit die Seitenoberfläche schnell geladen wird, aber eine Geschwindigkeitsverbesserung wäre schön.
Oder wäre es besser, meine eigene Bewerbung zu schreiben, um mir die relevanten Informationen direkt aus der Magento-Datenbank zu geben? Es ist nicht so kompliziert von einer Datenbank und wenn ich eine direkte Abfrage mache, wird sie innerhalb einer 100stel Sekunde mit den Ergebnissen geladen ...
Die einzige Überlegung, die ich bei dieser Option habe, ist:
- Was ist, wenn Magento sein Datenbankschema aktualisiert und ändert?
- Oder ist das Datenbank-Setup von Magento relativ sicher / abwärtskompatibel?
Hat jemand irgendwelche Erfahrungen damit und mit ihren Erfolgs- oder Erfolgsgeschichten? Ich muss eine informierte Entscheidung treffen, um wissen zu können, wie ich vorgehen soll.
quelle
Antworten:
Ich bin genau diesem Problem ausgiebig begegnet und habe es umgangen, indem ich direkt mit Magento-Objekten gearbeitet habe. Ich denke, es gibt Bedenken hinsichtlich Codeänderungen und so weiter, die Sie beschreiben, aber ein Großteil meines Codes befindet sich in Einweg-Skripten zum Laden alter Daten, solche Dinge, also war es ein kleines Problem. Die direkte Arbeit mit den Magento-Objekten hatte auch den Nebeneffekt, dass ich die Interna ein wenig mehr lernte als nur mit der SOAP-API - natürlich eine steilere Lernkurve, aber ich fühle mich ein bisschen besser informiert darüber, was los ist da drin, als hätte ich mich daran gehalten, immer nur die SOAP-API zu verwenden.
Eine andere Option, die wir versucht haben, war das Zwischenspeichern der Daten mit Memcached (oder so etwas wie Redis würde auch funktionieren), obwohl Sie sich jetzt Gedanken darüber machen müssen, wie oft der Cache aktualisiert werden soll, von wo und aus ähnlichen Dingen. Es erreicht jedoch das Ziel, Daten viel, viel schneller abzurufen. Ich denke, ob dies eine gute Option ist oder nicht, hängt davon ab, was Sie genau versuchen.
quelle
$order = Mage::getModel('sales/order')->load($order_id);
im Grunde. Es gibt ein oder zwei Ausschnitte in diesem ForenthreadDie SOAP-API zu beschleunigen wird schwierig sein. Sie können jederzeit zusätzliche Hardware (schnellerer MySQL-Server) einsetzen oder den Speicher unter NginX ausführen. Wenn Sie einige Millisekunden benötigen, kann NginX große Mengen von http-Anforderungen besser verarbeiten. Caching würde nicht wirklich helfen, da die Antwort der meisten Anrufe jedes Mal unterschiedlich sein wird.
Das Erstellen einer eigenen API von Grund auf mit Magento Core-Modellen ist möglicherweise die schnellste Lösung, da Sie den Code optimieren können, um die Leistung zu verbessern, indem Sie nur genau das laden, was Sie benötigen. Aus meiner Erfahrung mit den Kernklassen hat sich zwischen Version 1.5 und 1.7 nicht viel geändert
Bearbeiten: Ich habe vergessen, ein kleiner schneller Gewinn könnte durch das Aktivieren der gzip-Ausgabekomprimierung in der Datei htaccess oder php.ini oder durch das Verschieben der SOAP-API auf einen anderen Server mit derselben Datenbank erzielt werden, wenn die MySQL-Datenbank dies nicht tut der Engpass
quelle