php - 优化使用 Magento 的网站

标签 php mysql magento stored-procedures

请耐心回答我的问题,因为这可能会有点长。

如果您查看 Magento 并尝试与任何其他非 PHP 电子商务购物车网站进行比较,您会发现后者相对更快。我知道以下因素也起作用:-

  1. 托管服务器带宽
  2. Magento 提供了许多功能,而其他公司没有(也将无法)提供像现在这样灵活的功能。
  3. 客户/管理员可以使用自定义模块功能覆盖 Magento 功能的核心行为,这对于其他非 PHP 网站来说有点困难。

对于非 PHP 网站,程序员可以非常轻松地使用存储过程的概念,借助存储过程,他们可以在 View 中加载整个数据库,然后断开与数据库的连接。因此,每当发生任何服务器对下一页/上一页的请求时,服务器只是访问 View 以获取正确的结果,而不是直接从数据库中获取。
同样从MySQL 5.0开始,它引入了存储过程的概念,但我不知道Magento是否完全使用了这个概念。即使它在 Magento 中使用,它是否对 Magento 有任何帮助,这是另一个大问题,因为 Magento 提供了很多功能。

与 Magento 网站相比,有许多客户希望他们的网站加载速度非常快。 Magento 在这方面可以提供任何帮助吗?

请任何知道做什么和怎么做的人都可以极大地帮助每个 Magento 用户,不仅在概念上,而且如果可能的话在编程上?

如果其他人有任何其他解决方案或任何其他想法,请分享这些,例如 William

最佳答案

不久前,我推出了一个 Magento 商店,其中包含超过 40 万种产品、7,000 多个类别、2,000 多个属性集以及这些产品的超过 400 万个属性。

我们需要加载时间约为 500 毫秒,并且它要在一个 Amazon EC2 超大内存实例上运行(每月约 360 美元)。

我们的解决方案?实现 Solr 。搜索现在由 Solr 提供支持,在浏览我们正在使用分面的目录时,用户可以通过我们的 400 万多个属性来缩小他们的结果。问题是如果您使用“varchar”属性值,Magento 不允许您缩小结果范围。因此,我修改了目录页面以使用 Solr 的方面,同时修改目录页面以不对数据库执行任何查询,除了一个。该查询将获得 Solr 返回的 ID 列表,并对这些 ID 进行直接查询。这个插件写了几天,主要是因为我以前从来没有用过Magento。

我们所做的最后一项更改是修改产品 View 页面,以便更快地获取属性。当您以 Magento 执行查询的方式拥有数百万个属性时,它真的很慢,一个简单的修改就修复了。

最棒的是,所有这些都是通过自定义插件完成的,没花很长时间,而且商店运行良好。

编辑:此外,请记住安装 APC(或替代方案)并配置 Magento 在其后端使用它。它极大地提高了速度,因为它不仅会加速 PHP,而且 Magento 被构建为与某些后端一起工作以加速它。您还可以做一些事情,例如将 Magento 的缓存存储在内存中(linux 中的 tmpfs)。将静态内容存储到 CDN 或静态内容服务器上将大有帮助,因为处理 Magento 的 Web 服务器根本不必处理这些请求。您知道,运行应用程序的基本内容。

您还可以告诉 Magento 将 session 保存到 Memcache 中,以便您的 session 在内存中并进行分发。一旦你修改了 Magento 以摆脱所有那些“令人讨厌的”查询,剩下的就和任何网站一样了。有大量工具可以帮助您“扩展”您的系统。请记住,我们有很多产品,并准备使用大约 1,000,000 种产品。因此,如果您要处理大约 40,000 种产品,您可能不必费那么大劲。

关于php - 优化使用 Magento 的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151274/

相关文章:

php - 将谷歌地图 v2 转换为谷歌地图 v3

php - Symfony2 中子表单实体上的 GroupSequenceProvider

mysql - 如何修复 MariaDB 的高内存使用率?

php - 数据库查询不同结果

Magento:如何在购物车页面、结帐等处删除捆绑产品选项的价格

php - 服务层和模型与领域驱动设计的关联

php - 上传的文件无法移动到 wp-content/uploads/2015/01。图片上传问题

php - 给出警告 : mysqli_error() expects exactly 1 parameter, 0

mysql工作台错误代码1215 : can't add foreign key constraint

magento - 如何在magento中获取最后运行的事务ID