提高magento网站的性能。

Posted

技术标签:

【中文标题】提高magento网站的性能。【英文标题】:Increase performance of magento website. 【发布时间】:2014-07-01 03:42:45 【问题描述】:

我尝试了所有可能的方法来加速 magento 网站。但我没有得到任何结果。

我遵循了以下一些方法..

启用所有 Magento 缓存层。

启用 gzip 压缩。

安装GTspeed插件并优化图片、js和CSS。

但是没有用。我的网站仍然处于非常低的响应率。

我尝试了 Magento 中的编译选项。但它并没有工作,当我在一段时间后点击编译过程时,它变得越来越

500 内部错误。

这是我的 Magento 网站:http://shyamwerragrandmart.com/

我还有另一个问题。在我的网站上,尝试将任何产品添加到购物车时,几乎需要 30 秒到 1 分钟才能添加到购物车(使用 ajax)。这必须减少。我该怎么办?

我在这里使用 Go Daddy 网络托管服务。

拥有无限带宽和无限空间。

请建议我提高网站性能的更好选择。

【问题讨论】:

仅供参考,Magento 有其own StackExchange site 共享主机是为静态 html 页面构建的,而不是像 Magento 这样的复杂 php 脚本。一旦您的访客人数持续超过 10 人,共享主机就不再是一个可行的选择。此外,Go Daddy 是世界上最糟糕的共享托管服务提供商之一,它只是有一个热门小鸡和大量资金用于天使投资者的广告/营销。可见性!=质量。搬到 Media Temple / Rackspace,永不回头。 使用 Magento 优化的主机,例如 MageMojo 或 Nexcess。 Magento 有一个非常复杂的框架,每次加载页面时都会加载大量文件和数据库查询。您需要在服务器级别进行优化才能获得真正显着的性能提升。 提供 Magento 运行所需的资源,或因性能不佳、崩溃和收入损失而受到惩罚。共享主机是一个失败的商业计划。 【参考方案1】:

一般来说,共享主机并不是 Magento 的最佳主机类型。尤其是Go Daddy,他们是出了名的坏。如果走 VPS 或专用托管路线太多,请找其他东西,Nexcess 有不错的共享托管计划。

其他帖子涵盖了大多数主题,但一旦您获得可靠的托管,请尝试使用整页缓存。

无耻插件:我推荐 Brim 的整页缓存,http://ecommerce.brimllc.com/full-page-cache-magento.html。我写的时候可能有点偏颇,但它是一款出色的 FPC,因为它在企业和社区上运行,具有打孔功能,并且可以通过管理面板进行完全配置。

【讨论】:

【参考方案2】:

此列表可能会帮助您提高 Magento 性能:

启用 Magento 缓存

这当然是优化的第一步:在 Magento 管理面板中启用所有可用的缓存。

压缩图片

许多人忘记了可以压缩图像(PNG、JPG),这会降低浏览器和网络服务器之间的带宽。不仅 Magento 皮肤使用的图像需要优化,目录图像也需要优化。多种工具可让您批量压缩图像,例如在线工具 Smush.It。

禁用不需要的 Magento 模块

通过禁用不需要的 Magento 模块,需要的资源更少——就这么简单。可以通过 Magento 管理面板中的配置或通过编辑 app/etc/modules 中的 XML 文件来禁用模块。例如,禁用对每个请求执行查询的 Mage_Log,但如果您使用外部程序收集站点统计信息,则不需要。

为小型网店启用平面目录

对于较小的网上商店,从复杂的 EAV 结构切换到平面目录可以节省时间。这种优化是可疑的,并且取决于许多参数,所以不要掉以轻心。

W3C 合规性

虽然可以说随着 HTML5 的到来,这一点变得不那么重要,但如果您的网页充满了丑陋的错误,浏览器将很难解释它,这仍然是一个事实。如果您坚持 W3C 合规性,则可以确保浏览器引擎能够轻松解析您的 HTML 代码。

一般压缩输出

通过启用 PHP 设置 zlib.output_compression,PHP 生成的输出在发送到浏览器时会被压缩。这节省了带宽。除了使用它,您还可以使用 Apache mod_deflate 模块,它还允许压缩非 PHP 输出(CSS、javascript、其他纯文本文件)。

配置 PHP 选项

大多数 PHP 设置实际上并不影响 Magento 的性能,只是设置了一定的限制。例如,memory_limit 和 max_execution_time 等设置不会增加页面负载,而只是确保某些操作不会超时或遇到内存问题。

会话存储

使用 Magento,会话可以存储在文件或数据库中(通过配置 app/etc/local.xml)。哪个选项性能最好,实际上取决于托管环境的设置方式。如果 mysql 数据库运行良好,那么数据库中的会话存储可能会使您的站点受益。但如果 MySQL 设置不正确,最好的选择可能是文件。

使用 PHP 加速器

通过操作码缓存,可以加快 PHP 的执行。有各种 PHP 加速器可以完成这项工作(APC、ZendOptimizer+、eAccelerator、XCache)。 APC 和 ZendOptimizer+ 都与 Magento 完美配合。

调整 PHP realpath_cache

例如,通过将 PHP realpath_cache_size 调整为 128K(默认为 16K)并将 realpath_cache_ttl 调整为 86400,事情可能会加快。确保不会耗尽内存,因为每个 Apache 子节点都会消耗配置的缓存大小。

使用 Apache mod_expires

通过告诉浏览器哪些文件在缓存中保留多长时间,您可以优化浏览器缓存。例如,JavaScript 文件的更改往往比 CSS 文件少得多(至少在网站的第一阶段),但也许在网站平稳运行几个月后,您可以最大限度地延长到期日期。

小心 404 错误

每次找不到文件(如样式表或图像)时,都会生成 404 错误。因为 Magento 的默认 404 被 Magento 本身的应用程序捕获,这会导致 Magento 应用程序在遇到每个 404 时启动。检查您的 Apache 日志以确保所有 404 错误都已解决。

禁用 Magento 日志记录

在 Magento 配置中,您可以在 Developers 选项卡下启用日志记录。根据 Magento 模块的不同,这可能会导致需要将更多日志写入文件系统,从而降低您的商店速度。因为日志功能只需要调试一些东西,在日常使用中,最好完全禁用日志记录。

MySQL 表优化

通过 phpMyAdmin,您可以对特定的 Magento 数据库表执行命令 OPTIMIZE TABLE。当表混乱时,这可能会提高性能。这不仅适用于复杂的 EAV 表,也适用于经常使用的常规 MySQL 表(例如 core_config_data)。

合并 CSS 和 JavaScript

通过将所有 CSS 和 JavaScript 文件合并为一个大文件,浏览器只需一个 HTTP 请求即可获取此内容。这节省了带宽。对于这种合并,可以使用 FooMan Speedster 模块。 Magento 1.4 包含一个合并 CSS 的选项,而 JavaScript 文件默认是合并的。

除了合并之外,FooMan Speedster 还提供了一个选项:它会从输出中删除空格,但是当压缩已经应用于 CSS 时,这个选项就不需要了。

使用 Magento 编译器模块

Magento 编译器模块限制了 PHP 在查找 PHP 文件时必须搜索的目录数量。这减少了 PHP 的执行时间,从而总体上加快了 Magento 应用程序的速度。

请注意,在启用 Magento 编译器的情况下,对 Magento 系统进行更改时需要小心。只有在(暂时)禁用编译器时才应进行升级。

一个非常巧妙的技巧是为 include/src 文件夹专门创建一个 tmpfs-mount。请注意,此 tmpfs-mount 至少需要 100Mb——最好是 200Mb。

MySQL 服务器调优

默认的 MySQL 设置足以运行一般的托管环境,但并非全部针对 Magento 进行了优化。调整诸如 query_cache_size 之类的设置可以显着提高性能,但也很危险,因为它在很大程度上取决于其他变量(数据库数量、每个数据库的表数量、查询数量、峰值使用量)。

通过 CDN 提供静态内容

图像、CSS 样式表或 JavaScript 文件等静态内容可以通过针对静态内容进行了更优化的其他服务器提供。例如,可以使用 CDN,以便始终从离访问者最近的位置提供静态内容。这对于为全球客户提供服务的网店而言至关重要。

禁用本地 Magento 模块

如果您的站点不需要本地 Magento 模块,您可以选择一起跳过对本地模块的搜索。在 app/etc/local.xml 文件中,您会发现一个 XML 标记允许您这样做。

小心使用 HTTPS

每次在webserver和浏览器之间使用ssl,加解密的过程都会加在两边。带宽也有轻微的开销。如果您对所有页面或仅几个页面禁用 SSL,Magento 站点的运行速度会稍快一些。但是,与此页面上的其他胜利相比,此“胜利”是如此之小,因此只能谨慎处理。获得的带宽并不重要,而如今几乎所有计算机都具有 CPU 处理能力,可以在几微秒内完成加密/解密过程。

云中的 Magento

虽然 CDN 可用于优化静态内容的带宽,但 Magento 应用程序也可以通过使用云计算以同样的方式进行优化。

用于动态数据的基于内存的文件系统

通过在 RAMdisk 或 tmpfs 等基于内存的文件系统上存储动态数据(var/cache、var/session),可以减少磁盘 I/O。

禁用 Apache htaccess 文件

当允许使用 htaccess 文件时,Apache 需要检查其路径中的每个目录以查看是否存在 htaccess 文件。通过将 Apache 配置指令从 htaccess 文件移动到 VirtualHost 配置文件,并一起禁用 htaccess 文件,Apache 的执行时间减少了。此提示可能在大多数情况下仅适用于专用服务器。

使用 Nginx 或 Litespeed

虽然 Apache 网络服务器的配置非常灵活,但还有其他网络服务器在内存使用方面得到了更好的优化:通过将 Apache 替换为 nginx 或 Litespeed,您可以进一步加快 Magento 脚本的速度。两个网络服务器都需要手动配置以允许 SEF URL。

对图片使用延迟加载

当页面加载时,访问者通常会等待该页面上的图像加载。根据这些图像的数量和大小,这可能需要一些时间。除了在页面加载时立即加载图像,您还可以添加 LazyLoad JavaScript 效果,确保仅加载可见图像(在浏览器屏幕内),而其余图像仅在访问者向下滚动时加载。

最小化 Apache 日志记录

如果最小化 Apache 日志记录,则每个传入请求所需的文件操作更少。当然,更少的日志记录也意味着在出现问题时更少的洞察力。另一种方法是优化存储 Apache 日志的文件系统。默认情况下,Apache 将日志记录到 /var 文件系统——但不需要为该文件系统启用日志等功能。

参考:http://magentotutorialbeginners.blogspot.in/2014/05/magento-performance-improvement.html

【讨论】:

【参考方案3】:

您可以通过以下步骤进行 Magento 优化:

    高性能专用服务器。例如:Amazon EC2 云 将 Apache 换成 NGINX 尽量减少 Javascript 的使用 缩小和压缩 CSS 文件 “组合 CSS”旨在减少由 浏览器 优化图片 对图片使用延迟加载 指定图片尺寸 将图像组合成 CSS 精灵 使用内容交付网络 (CDN) 交付静态文件 比如 JS、CSS 和图像来卸载你的服务器 禁用不需要的模块/扩展 启用所有 Magento 缓存 使用整页缓存/清漆缓存/Memcache/RedisCache 如果你真的不需要,不要使用分层导航,它需要 很多资源 启用编译 限制产品概览页面上的产品数量。 仅将那些属性前端属性设置为“是” 其实打算用。将所有其他设置为“否”。 请勿用于快速搜索、高级搜索比较等:目录 -> 属性 -> 管理属性 -> 前端属性。 安装 Google Page Speed 模块 最小化重定向 – 最小化从一个 URL 到 另一个缩短了用户的等待时间。 首选异步资源 - 异步获取资源 防止这些资源阻塞页面加载。

【讨论】:

以上是关于提高magento网站的性能。的主要内容,如果未能解决你的问题,请参考以下文章

Magento网站运行原理解析

如何创建 Magento-2 扩展包以上传到 Magento-2 官方网站?

麦进斗Magento2转移网站

是否可以从另一个网站将产品添加到 Magento 购物车,而产品不在 magento 商店中

非常担心 Magento 的性能

[转]Magento刷新索引的几种方法