关于优化网站速度的建议,从何处开始?


16

我被要求尝试为Magento网站的缓慢加载时间找到解决方案。我进行了Yslow测试,最大的罪犯似乎是

  • 减少HTTP请求
  • 使用CDN
  • 添加过期标题
  • 将Javascript放在最下面
  • 缩小jS和CSS
  • 配置ET标签
  • 减少DNS查找
  • 避免使用AlphaImageLoader过滤器

作为电子商务经理,我正在就我在Magento管理员,网站管理员工具等角色中可以做什么以及如何指示开发人员使我们的网站达到合规性并显着提高速度方面寻求建议。

我也一直在寻找一个名为GTMetrix的插件,该插件似乎在管理员中为您做了很多(组合CSS表格,优化图像等),有人对此有任何经验吗?我通常会尝试避免过多的扩展扩展至基本功能,但似乎是一种解决方案。http://gtmetrix.com/magento-optimization-guide.html

您的建议将不胜感激,因为我很难知道从哪里开始产生最大的影响。

提前致谢。

在此处输入图片说明

在此处输入图片说明


Answers:


27

(摘自我自己的博客,网址https://www.gui.do/post/101-ways-to-speed-up-your-magento-e-commerce-website

A)托管环境/一般提示

  1. 获取专用服务器。
  2. 在您的客户所在的国家/地区托管您的网站。
  3. 不要在您不使用的Web服务器上托管大小不一的文件。
  4. 转到MySQL Admin,选择所有表并修复,然后对其进行优化。
  5. 使用PHP加速器,例如APC,ZendOptimizer +或Xcache。
  6. 仅安装必要的Apache模块。
  7. 使用Apache mod_expires,并确保设置文件应缓存的时间。您可以将以下示例用于Apache virtualhost配置:#打开Expires并将默认值设置为0 ExpiresActive On ExpiresDefault A0#设置对媒体文件的缓存1年(永远吗?)ExpiresDefault A29030400标头附加高速缓存控件“公共”#在媒体文件上设置缓存2周ExpiresDefault A1209600标头附加高速缓存控件“公共”#在常用更新文件上设置1周缓存ExpiresDefault A604800标头附加高速缓存控件“代理重新验证”
  8. 在htaccess中启用Gzip压缩
  9. 压缩输出,使用zlib.output_compression或mod_deflate。
  10. 使用内容分发网络(CDN)并行传输静态内容。有一个Magento扩展程序可以帮助您使用类别和产品图像执行此操作:One Pica Image CDN。但是...(请参阅下一个技巧)。
  11. 不要使用太多不同的外部源(用于图像,iframe,(twitter / facebook)提要等),因为每个DNS查找都需要花费额外的时间,并且您会在站点(某些第三方服务器)上创建额外的依赖项,以使其能够正确加载。
  12. 启用Apache KeepAlives:确保您的Apache配置启用了KeepAlives。KeepAlives是一种技巧,可以通过单个TCP连接来处理多个HTTP请求。每个TCP连接的建立会花费额外的时间,这可以大大减少下载网站的所有文件(HTML,JavaScript,图像)所花费的时间。有关更多信息,请访问Apache.org。不过要小心,我从一些人那里听说,这会在服务器上造成(大量)额外的负载,并可能在高流量时刻使服务器崩溃!
  13. 最小化重定向。
  14. 使您的输出符合W3C。错误会降低浏览器的速度。
  15. 为NginX或Litespeed交换Apache。如果这不是一个选择,那么请使用Zend Server(最好是非CE版本,以便您可以使用全页缓存)。
  16. 关闭或至少减少Web服务器日志记录(减少磁盘写入)。
    • 禁用访问时间记录。Magento Wiki:对于Linux服务器,如果您在任何mysql,Web服务器或缓存分区上启用了访问时日志记录,请尝试将其关闭以提高性能。如果您使用的是ext3或reiserfs,则可以使用更快的日记写方法。有关更多信息,请访问Linux.com
  17. 从源代码而不是从操作系统的程序包管理器编译MySQL。
  18. 始终升级到最新的Magento版本。您不仅会获得更多的功能以及错误和安全修复,而且Magento的每一次更新都会表现更好。
  19. 查询缓存大小:Magento博客:修改MySQL服务器的配置,以更好地利用服务器的RAM。大多数Linux发行版都提供了开箱即用的保守MySQL软件包,以确保它可以在各种硬件配置上运行。如果您有足够的RAM(例如1gb或更多),则可能需要尝试调整配置。下面是一个示例my.cnf,尽管您想查阅MySQL文档以获取配置指令和建议设置的完整列表。
  20. 在您的php配置中设置“ php_value memory_limit 128M”或将其添加到您的.htaccess文件中,以确保不会耗尽内存。
  21. 对动态数据使用基于内存的文件系统。如果将动态数据(var / cachevar / session)存储在RAMdisk或tmpfs上,则磁盘I / O会减少。
  22. 在php.ini中更改realpath_cache_size。
    realpath_cache_size = 1M (请注意 每个apache进程    realpath_cache_ttl=86400 (ok for production site) 
  23. Memcache(用于硬核)已在http://www.magentocommerce.com/boards/viewthread/9037/中进行了记录,以及来自http://alexle.net/archives/275的更多提示可帮助您启动和运行。
  24. 禁用PHP open_basedir指令。阅读此
  25. 消除目录结构扫描.htaccess文件。
  26. 推荐的innodb_buffer_pool_size。
    • Web和数据库服务器组合,6 GB RAM:  2-3 GB
    • 专用数据库服务器,6GB RAM:5 GB
    • 专用数据库服务器,12 GB RAM:10 GB
  27. 查询缓存:query_cache_size:64MB,query_cache_limit:2MB
  28. 使用单独的后端服务器来处理管理员用户,处理后端活动(cron),预生成全页缓存并处理媒体查询。
  29. 使用多个Web节点(前端服务器)来处理浏览和结帐。
  30. 使用Varnish反向代理缓存,@ alistairstead的Magento解释:整理您的Magento商店,让它飞起来!
  31. 如果您的网站受到搜索引擎的大量抓取,则可以通过调整robots.txt来节省一些资源。
  32. 尝试以下一些缓存扩展:
    • http://www.artio.net/magento-extensions/m-turbo-accelerator
    • http://www.aitoc.com/cn/magento_booster.html
    • http://www.tinybrick.com/magento-modules/performance.html/
  33. 安装Yireo DisableLog插件。它可以防止Magento向数据库中写入大量内容,而当您已经在使用Google Analytics(分析)之类的东西时,这是无用的。

B)模板

  1. 优化所有(模板)图像-如果不是全部,则大多数图像至少应小于10kb。
    • 使用图像编辑器裁剪空白区域。
    • 使用PNG8文件或GIF文件而不是Jpegs,并且不要使用透明度(取决于您使用的颜色数和图像的大小,但请自己尝试)。
    • 缩放图像:按所需尺寸制作图像,而不在编辑器中调整其大小。
    • 使用图像压缩(您可以使用smush.it来完成此操作)。
    • 使用CSS Sprites,甚至还有CSS Sprite Generators
  2. 缩小您的CSS,删除未使用的代码
  3. 尽量减少使用Javascript。
  4. 使用轻量级模板作为模板的基础。例如:Yoast Blank SEO主题
  5. 指定图像尺寸
  6. 在扩展程序中使用阻止缓存和HTML输出。
  7. 将Javascript Lazy Loader应用到原型中

C)Magento配置

  1. 卸载所有您实际上不使用的扩展。
  2. 禁用不使用的模块:  系统->配置->高级->高级。 ![在此处输入图片描述] [1]
  3. 启用所有Magento缓存:系统->缓存管理。  
  4. 请使用非现场状态跟踪工具(例如Google Analytics(分析)),而不是现场使用。其中大多数将使用Javascript,自己托管Javascript。
  5. 合并Javascript和合并CSS文件System-> Configuration-> Advanced-> Developer-> 'Javascript settings''CSS Settings'。您也可以考虑使用扩展程序(例如Fooman Speedster扩展程序)来执行此操作,以最适合您的方式。
  6. 尝试一些Magento性能扩展。
  7. 启用Magento Flat Catalog,这仅对非常大的目录有所帮助。
  8. 如果您真的不需要分层导航,请不要使用它,因为它会占用大量资源。
  9. 使用Magento的编译功能。据报道,它可以将性能提高25%-50%:“ 系统”>“工具”>“编译”。 编辑:Yoav Kutner(Magento CTO)让我知道,“ 在以后的版本中,由于我们优化了目录EAV,如果您具有字节码缓存并且配置正确,则确实不需要Magento编译 ”。
  10. 使用正确的会话存储,选择文件系统或数据库(在安装过程中)。大多数安装应使用“文件系统”,因为它速度更快并且不会导致数据库增长。但是,如果您的站点将在多个服务器上运行,则应选择“数据库”,以便无论用户请求从哪个服务器提供服务,用户的会话数据都可用。有关详细信息,请访问Magebase.com上的Ashley Schroder。
  11. 在产品概述页面上限制产品数量。
  12. 仅将那些您将实际使用的属性前端属性设置为“是”。将其他所有设置为“否”。不要在快速搜索,高级搜索比较等中使用:目录->属性->管理属性->前端属性。  
  13. 禁用Magento日志:系统->配置->高级->开发人员->日志设置(默认为禁用)。  

企业唯一提示:

  • 禁用Enterprise_CatalogEvent。转到管理->系统->配置->目录->目录事件。然后,您要关闭“启用目录事件功能”和“启用目录事件窗口小部件”的设置。
  • 启用S​​olr搜索,与默认设置相比,它更快,尤其是当您有很多产品(> 10k)时。
  • 启用全页缓存。

D)速度测试,分析,监控

  1. 使用Magento Speed Test(Ashley Schroder)测试您的Magento网站
  2. 通过websiteoptimization.com运行您的网站。
  3. 使用Google Page Speed Firefox扩展或Yahoo Yslow获得来自Google和Yahoo的一些提示。
  4. 在Analytics(分析)中实施Google Speed测量:使用Site Speed Analytics报告测量页面加载时间
  5. 速度监控和停机警报。
    • 监控器
    • 平度

奖金提示

(因为它实际上并没有加快前端的速度,而只是加快了后端的速度):

  • 如果您在Windows上进行常规管理,请使用K-Meleon。它使Magento的沉重JS后端比任何其他浏览器都快得多。
  • 使用Yireo.com的GoogleGears扩展名可以在本地缓存静态文件。
  • 使用本地pc / mac应用程序来管理Magento(例如  mag-manager.com)。

我确实意识到您可能无法使用上述所有技巧,但并不是全部使用这些技巧,有时您只是选择让功能优先于性能,这是可以的。如果您只能应用其中的一些,则仍将提高速度并获得用户体验。请记住:由于速度取决于许多变量,因此某些技巧可能根本不会对您的网站产生任何影响,而其他技巧可能会产生巨大影响。因此,请务必测试您采取的每个步骤的影响并采取相应的措施。


4
  1. 图片-在很多情况下,上传图片的人(产品,CMS页面等)都没有经过如何优化图片尺寸的培训。在线上有很多文章,但是很多只是常识。

    • 不要将图像用作文本。
    • 适当使用JPEG / GIF / PNG(即,一般不要将PNG用于照片图像)
    • 将精灵用于小图像,因为您可以将一堆小图像打包到一个文件中,从而只给您一个HTTP请求,而不是几十个或更多。您可能还会考虑字体图标。
    • 以尽可能低的质量保存图像,同时保持可接受的可见度。我发现JPEG的最佳质量通常约为50-60。有时质量20是完全可以接受的,您可以将图像从300Kb减少到30Kb。那是很大的节省。
    • 考虑在图像较重的页面上进行延迟加载。
  2. HTTP请求-另一个大罪犯。有时,减少请求的工作很多,但您应该始终将其降低到最低。Magento提供了一些功能来帮助解决此问题(合并CSS / JS)。

  3. 其他DNS查找-我想说这对于购物车/结帐流程最为重要。许多商店将具有调用服务的各种API集成。尽管您不能做很多事情来使运输提供商的API响应更快,但您至少可以识别出速度缓慢的服务,否则这些服务就不会很明显了。考虑一下如果您要致电UPS,FedEx,USPS,税率提供商,付款提供商,会员站点等,结帐可能会花费额外的时间。

  4. 其他因素-报告中提到的其他一些因素可能不会像图像和HTTP请求那样产生很大的影响。最小化CSS和Javascript无疑是值得的,但是从长期的角度来看,实际收益才是真正值得注意的。另外,CDN确实可以提供帮助,尤其是在您提供可下载产品的情况下。


我认为通常对单独托管非常重视。过去,我的任务是对网站执行某些服务器调整,以提高速度,却发现主页正在加载20Mb的资产。

同样,如果您的网站构建得过于草率,过于肿,则有关服务器性能的Magento白皮书将毫无用处。如果您的目标是提高网站的速度,则第一步应该是查看页面本身,以发现效率低下的问题。只有确定了站点的精简程度之后,才应开始考虑升级主机。

记录下来,我管理的网站在Nexcess上使用SIP-200已有大约五年左右的时间,平均每天有5000次访问(这是季节性的,因此在春季末/初秋时分超过1万次)。对于该站点的这种级别的服务器,我绝对没有任何抱怨,并且我们正在运行一个相当普通的Magento CE版本,其中包含数十个类别的数千种产品。


2

图片是互联网上的一个大问题,几乎和javascript一样大。您需要做的第一件事就是优化图像。

  • 设置内容交付网络
  • 优化图像
  • 使用图像LazyLoader

现在进入您的Javascript文件:

  • 压缩并合并它们
  • 通过使用更多的ajax消除其他页面重新加载
  • 将您的JS文件放入页脚
  • 从其他域加载您的JS文件

疯狂地缓存

  • 启用MySql缓存并增加内存池的大小
  • 启用APC缓存,以便PHP不必每次都重新学习
  • 启用Magento全页缓存并利用Apache缓存
  • 启用GZIP可以将文件更快地交付给用户。
  • 启用适当的Expires标头,以便您的用户也可以缓存

Magento还具有许多内部缓存机制:

  • 启用明显的Magento缓存
  • 从管理员启用CSS和JS压缩和编译
  • 启用平面目录和产品以加快mysql调用
  • 启用Magento编译器以加速PHP自动加载器

如果您需要更多详细信息,我已从该知识库中提取了信息。


0

以下是我建议加快Magento网站的建议:

  1. 执行第三方扩展审核和TTFB审核。一些自定义插件会降低Magento的速度。获取所有第三方模块的列表,并逐一禁用它们。使用www.webpagetest.org进行基准速度测试。当您确定滥用者时,请与其供应商联系以告知他们。要运行TTFB审核,请安装免费程序xhprof或使用NewRelic

  2. 找出您的托管资源是否足以运行Magento。在主机上安装相同版本的Magento的新副本。将其速度与实时站点进行比较。如果速度明显快于您的站点,那么您的托管就可以了。如果它和您的实时站点一样慢,那么您的托管效果不好。

  3. 执行各种前端优化。其中包括:图像优化,gzip压缩,CSS / JS压缩。通过针对Google PageSpeed Insights运行站点,可以获取需要执行的操作的报告。

摘自我的文章


进行第三方扩展审核的最佳方法是什么?谢谢。@Konstantin Gerasimov
宝石

0
  • 您既需要集中精力优化网站(结构,CSS,图像等),又要找到真正快速的主机。

  • 我建议您寻找一台提供SSD存储和Cloudflare CDN的主机,以及针对基于Magento的网站专门优化的主机服务。

  • 我目前正在为我的网站使用所谓的“热门”计划,因为它做得很好。

  • 以下是其完整规范:https : //www.bgocloud.com/hosting/websites-cpanel/popular-plan

如果您认为这些功能不适合您,则可以查看其他计划或专用服务器页面。


-1

我发现在网站速度方面排名第一的最重要事情,而magento是您的服务器。您在专用主机上吗?你必须的。特别是带有SSD驱动器的硬盘。Magento最慢的部分是它实际上如何处理PHP和呈现页面的方法,而对抗这种情况的唯一方法就是更好的服务器。另外,还有完整的页面缓存,请尝试使用Lesti FPC。


嗨,谢谢您的回复。我感觉我们的服务器配置可能不是我们所需要的,但是我是新来的,只是学习他们的系统,而以前从来不必深入研究系统管理员。我挖出了最新的发票(假设这是我们正在运行Magento的服务器):18636双至强E5-2609(E52609)RAM:16GB硬盘1:500GB SATA硬盘2:500 GB SATA硬盘3:64GB Samsung 830 SSD硬盘4:无硬盘控制器:板载控制器
Brandon

我不同意这个答案。如果您的网站因大图像,大量HTTP请求以及对第三方服务(UPS,税务查询等)的请求而陷入困境,那么世界上最好的专用主机将无法为您做任何事情。首先使网站正常运行,然后考虑升级主机(如果适用)。
pspahn 2014年

仅供参考。Samsung 830是为家用计算机而非服务器而设计的磁盘驱动器。听起来好像服务器根本不是服务器。
choco-loo 2014年

-1

正如吉多(Guido)指出的那样,有一个长答案和一个短答案。这些是您设置时需要遵循的步骤。您需要找到一些能胜任的资源来遍历所有组合以找到最合适的方法,这很耗时,但是Magento站点需要执行标准流程。还有一个简短的答案,但我们与孵化器合作,他们主要将企业技术用于高端平台,但是将其移植到Magento,但这在这里并不重要。您将需要在硬件,fpc,缓存,业务需求之间找到确切的平衡,唯一的问题是一旦完成练习后,如果您进行了实质性的更改,则需要重新运行它。


-1

或者您跳过所有这些,使用与Etsy相同的技术堆栈,与具有多节点的Very相同的主机,跳过fpc,在fpc ttfb附近,动态加载1-2s,并使用Pagespeed一起添加,从而为您提供全面的支持。现在,如果您添加了过多的热心编码器和扩展名,则存在限制。这取决于您是否要采用技术路线,并且必须经过所有这一切,程序员会不同意业务,或者您采取业务观点并找到最佳解决方案,而不考虑技术抗议通常会导致技术减少的原因工作。

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.