加快magento肥皂v1


10

对于经验丰富的magento开发人员,我有多个问题:

  1. 是否可以提高magento v1 soap api的速度?当请求数据时,Magento花费1.5秒快速编译诸如客户地址等简单信息。

    请求多个可能的相关数据节点可能很快花费大约5-7秒的时间。

    现在我已经通过AJAX请求完成了这些请求,因此页面界面可以快速加载,但是速度提高会很好。

  2. 还是编写自己的应用程序直接从magento db给我相关信息会更好?db并没有那么复杂,如果我执行直接查询,它会在100秒内加载结果...

    我对该选项的唯一考虑是:

    1. 如果magento更新和更改其数据库方案怎么办?
    2. 还是magento的数据库设置相对升级安全/向下兼容?

有没有人对此有任何经验,成功或失败的故事?我需要做出明智的决定,才能知道如何进行。


1
它可能绑定了PHP, 而不是MySQL,Nginx或其他任何东西。与商店的其余部分相同。让您的商店快速发展,API随之而来。但是,它永远不会很快减轻-数据流/ API方法无论如何都是缓慢的,因此自定义实现将总是以可管理性/实现时间/可升级性为代价而胜过。
Ben Lessani-索纳西

3
不,这不是php绑定的。这是magento的整个设置,这使事情变得异常缓慢。与请求包含多个项目和购物车的大型storeview页面相比,soap api请求完成所需的时间更长。magento设计中有些歪斜。
Tschallacka

Answers:


8

我已经广泛地遇到了这个问题,并且通过直接使用Magento对象来解决此问题。我认为代码更改和您要描述的内容无关紧要,但是我的大部分代码都是在一次性脚本中加载旧数据之类的,所以这是个小问题。直接使用Magento对象也确实具有使我比仅使用SOAP API还要多了解一些内部知识的好处-当然,学习曲线更陡峭,但是我确实对正在发生的事情了解更多在那里,就好像我只使用过SOAP API一样。

我们尝试过的另一个选择是使用Memcached缓存数据(或者像Redis这样的东西也可以工作),尽管您现在必须担心更新缓存的频率,从何处更新以及类似的事情。但是,它确实实现了更快,更快地检索数据的目标。我认为这是否是一个好选择,将完全取决于您要执行的操作。


好吧,如果我要从magento本身做点什么,我将不会获得太多的速度优势,因为magento仍必须“启动”以处理请求。我喜欢soap api,因为它“不会改变”,但是我讨厌这样一个事实,即它对最简单的查询的响应是如此之慢。即使是必须处理更多请求的主站点也要快得多。
Tschallacka 2013年

我想做的是将magento链接到我们的ERP软件,因此我需要在任何给定时间访问最新数据。
Tschallacka 2013年

1
也许-以我为例,我正在写一些东西,这些东西将按增量id加载订单,然后根据其数据执行一些操作。在SOAP API中,加载完整订单大约需要1.5秒,而以“原始对象”形式只需几分之一秒。当我一次运行要加载数百个它们时,对我来说选择很明确。同样,另一个限制是通过执行“ magento应用程序”样式,它必须位于同一服务器上。就我而言,我一点也不介意,但是值得记住。
Mike

1
您如何以原始对象形式加载所有内容?
Tschallacka

$order = Mage::getModel('sales/order')->load($order_id);,基本上。这个论坛主题中有一两个片段可能会说明更多:magentocommerce.com/boards/viewthread/18629
Mike

6

加速SOAP API将会很困难。您总是可以添加一些额外的硬件(速度更快的MySQL服务器)或在NginX上运行存储,这将在您花费几毫秒的时间后更好地处理大量的HTTP请求。缓存实际上并没有太大帮助,因为大多数调用的响应每次都不同。

使用Magento Core模型从头开始构建自己的API可能是最快的解决方案,因为您可以通过仅加载所需的内容来调整代码以提高性能。根据我使用核心类的经验,在1.5版和1.7版之间并没有太大变化

编辑:我忘记了,从htaccess或php.ini文件中的gzip输出压缩中打开一个小小的捷径可能来自,或者如果您感觉不舒服,如果没有MySQL数据库,则将SOAP api移至使用同一数据库的另一台服务器瓶颈


1
mysql数据库不是瓶颈,瓶颈是magento引导所有配置文件,加载所有废话,编译soap api,然后最后记得我提出了一个请求,获取数据,对其进行评估,然后进行编译将其转换为请求的格式,验证格式,然后通过soap连接将其输出...。检查检查检查再次检查是否很好...但速度太慢。在一开始它会做的很好,但是需要在某些时候加快速度。
Tschallacka

Magento的本地缓存应该可以帮助您组合配置文件,并且您可以使用编译器来加速代码。另外,PHP加速器(en.wikipedia.org/wiki/PHP_accelerator)可以在这里提高性能。但是,在您的情况下,值得考虑的是使用Magento核心api构建自己的API。
桑德·曼格尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.