Php 为什么Magento这么慢?

Php 为什么Magento这么慢?,php,magento,optimization,Php,Magento,Optimization,Magento的速度通常很慢吗 这是我第一次使用它,管理面板只是需要很长时间来加载和保存更改。它是带有测试数据的默认安装 它所在的服务器以极快的速度为其他非Magento站点提供服务。Magento使用的PHP代码是什么让它如此缓慢,可以做些什么来修复它?我只参与了优化Magento的性能,但以下是系统如此缓慢的几个原因 Magento的一部分使用在MySQL之上实现的EAV数据库系统。这意味着查询单个“事物”通常意味着查询多行 在幕后有很多事情(应用程序配置、系统配置、布局配置等),包括在内存

Magento的速度通常很慢吗

这是我第一次使用它,管理面板只是需要很长时间来加载和保存更改。它是带有测试数据的默认安装


它所在的服务器以极快的速度为其他非Magento站点提供服务。Magento使用的PHP代码是什么让它如此缓慢,可以做些什么来修复它?

我只参与了优化Magento的性能,但以下是系统如此缓慢的几个原因

  • Magento的一部分使用在MySQL之上实现的EAV数据库系统。这意味着查询单个“事物”通常意味着查询多行

  • 在幕后有很多事情(应用程序配置、系统配置、布局配置等),包括在内存中构建巨大的XML树,然后“查询”这些树以获取信息。这需要内存(存储树)和CPU(解析树)。其中一些(尤其是布局树)是巨大的。此外,除非启用缓存,否则这些树是从磁盘上的文件和每次请求中构建的

  • Magento使用其配置系统允许您重写类。这是一个强大的特性,但它意味着无论何时实例化模型、助手或控制器,都需要运行额外的PHP指令来确定是否需要原始类文件或重写类文件。这就加起来了

  • 除了布局系统,Magento的模板系统还涉及大量递归渲染。这就加起来了

  • 一般来说,Magento工程师的首要任务是构建最灵活、可定制的系统,并在以后担心性能

    要确保更好的性能,您可以做的第一件事是打开缓存(系统->缓存管理)。这将减轻在Magento构建各种XML树时出现的CPU/磁盘阻塞


    您要做的第二件事是确保您的主机和操作团队具有性能调优经验。如果您依靠每月7美元的计划来度过难关,那么祝您好运。

    继Alan Storm关于缓存的建议之后,我特别建议您研究与缓存相关的两件事:

    -确保缓存在memcached中,而不是在磁盘上。

    我负责几次magento安装,一旦您在系统上获得任何类型的负载,memcached开始执行得更快。而且它很容易改变(至少相对于做其他magento的事情!)

    这里是一个很好的起点:-但如果您以前从未使用过memcached,那么也值得查看一些关于它的一般信息

    -启用模板/视图缓存。

    这是一篇好文章:

    magento网站上也有一些不错的功能(google magento block caching),但目前已经关闭


    要将我的两分钱添加到块缓存中,我建议您在/app/code/local中创建自己的块,扩展核心块并定义缓存参数,将它们命名为xxx\u cache,然后更新布局以使用这些块而不是核心块。这样,您就可以避免在升级magento时丢失更改或破坏系统。

    如果您还没有看到,magento和Rackspace合作编写了一份关于性能调整magento的白皮书。太棒了。

    ---编辑---

    另一个最新可用的资源(2011年10月)是:


    (感谢Alan Storm的介绍。)

    您的Magento购物车运行缓慢的原因有很多,但没有理由认为有多种方法可以消除问题并使其非常快。通过修改htaccess文件来启用Gzip是一个开始。您还可以安装fooman speedster扩展。所使用的服务器类型也将决定您商店的速度。更多提示和更好的解释这里

    Magento非常慢,因为数据库设计不是很好。代码乱七八糟,很难更新和优化。所以所有的优化都是通过缓存而不是代码来完成的


    另一方面。这是一个有很多工具的网络商店。所以,如果你需要一个灵活的网店,只要买一个功能强大的服务器,你就可以了。

    当我第一次安装时,我的页面需要30秒才能加载。我的服务器内存或处理器没有达到最大,所以我不知道该怎么办。查看firebug的网络面板,它每页加载大约100个文件,每个文件都需要很长时间才能连接。在htaccess中安装fooman speedster和gzip后,加载时间缩短到3秒,就像在我服务器上的其他购物车上一样。

    从Apache切换到LiteSpeed对我们帮助很大。除了:编辑MySQL的设置,安装Fooman Speedster(压缩/组合js和css文件的模块),以及安装APC。Magento还发布了一份关于如何从enterprise edition中获得最佳性能的白皮书,但该白皮书同样适用于其他版本:

    我在公司中更多地参与了托管服务器优化,但我可能有一些建议供您参考。首先,您可以使用Zend server的代码跟踪功能更仔细地查看代码。它可以让你看到什么地方,什么时候东西变脏了

    我完全同意benlumley关于缓存的考虑。我们托管的大多数站点甚至没有启用块缓存。必须显式调用此缓存,而不是“假定”。所以,如果您的代码还没有参与到这个机制中,那么您肯定想尝试一下。如果你有一个EE版本,你可以得到完整的页面,以获得最好的野兽

    反向代理也会有很大帮助。它将缓存静态资源,显著降低前端服务器的php解释堆栈的压力