2013-01-11 93 views
7

我正在使用VB.NET來處理Magento API。我正在使用SOAP v1,直到遇到需要關聯數組的調用。經過一天左右的運氣,我決定嘗試v2,它擁有我需要的所有物體。 v2有效,但非常非常慢。要更新一個庫存項目庫存,需要大約一分半的時間才能登錄並執行更新,而使用v1可能不到10秒。這提醒了我爲什麼我首先選擇了v1。Magento SOAP v1與v2性能對比

我的問題是,如果有無論如何改善v2的性能。我無法想象我需要它的程度,但我想我會問。我已經啓用了緩存。如果可能的話,讓v1接受一個關聯數組似乎是一個挑戰。

回答

22

WSDL請求可能需要很長時間纔會有很多原因,但我要檢查的第一件事是緩存的WSDL的設置。當您向Magento進行API調用時,Magento使用PHP的SoapServer對象。 SoapServer對象需要獲取自己的WSDL文件來操作,並且生成和獲取此文件可能是一件耗時的事情。

轉到

System -> Configuration -> Magento Core API -> General Settings 

,並查找 「啓用緩存WSDL」。將其設置爲yes,您會看到一些API性能改進。

您的Magento版本中可能不存在此設置 - 如果您遇到這種情況,您可能會對Mercury API擴展(由我創建和銷售)感興趣,其中包含適用於舊版Magento的此功能的API改進。如果您沒有擴展預算,Mage_Api_Model_Server_Adapter_Soap是舊版本Magento禁用此緩存的類。

+0

你是對的。它已經減少了與v1相同的時間。我實際上在搜索中碰到了這個設置,但從來沒有嘗試過:(哦,現在我知道了。再次感謝。 – gwgeller

+0

我喜歡輕量級v1的樣子。我轉換爲v2是因爲我遇到了VB.NET的問題。我想我可能會問另一個問題,如果你想保持它的注意;) – gwgeller

+0

我很好奇,當你使用admin的清除緩存功能清除緩存。我想你應該在使用v2創建自己的API時做到這一點。任何洞察這個風暴先生? –