【问题标题】:Magento SOAP v1 vs. v2 performanceMagento SOAP v1 与 v2 性能对比
【发布时间】:2013-01-11 18:44:19
【问题描述】:

我正在使用 VB.NET 来处理 Magento API。在遇到需要关联数组的调用之前,我一直在成功使用 SOAP v1。在一天左右的不幸之后,我决定尝试 v2,它包含我需要的所有对象。 v2 可以工作,但是非常非常慢。要更新一个库存物品库存,大约需要一分半钟的时间来登录并进行更新,而使用 v1 可能不到 10 秒。这让我想起了我当初选择 v1 的原因。

我的问题是是否有任何方法可以提高 v2 的性能。我无法想象我需要它的程度,但我想我会问。我已经启用了缓存。如果可能的话,让 v1 接受关联数组的替代方法似乎是一个挑战。

【问题讨论】:

    标签: performance api magento soap


    【解决方案1】:

    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 禁用此缓存的类。

    【讨论】:

    • 你说对了。它已将时间减少到与 v1 大致相同。实际上,我在搜索中遇到了该设置,但从未尝试过 :( 哦,现在我知道了。再次感谢。
    • 我喜欢 v1 的轻量级。由于 VB.NET 遇到问题,我切换到 v2。如果您想留意它,我想我可能会问另一个问题;)
    • 我很好奇当您使用管理员的清除缓存功能时是否清除了此缓存。我想您在使用 v2 创建自己的 API 时需要这样做。对这位风暴先生有什么见解吗?
    • @JonathanSpooner 据我所知,当您使用管理员的清除缓存功能时,此缓存未被清除。 WSDL 缓存是 PHP 内部的东西,而 Magento 管理员的清除缓存功能控制 Magento 应用程序缓存。
    猜你喜欢
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多