我对WooCommerce(和WordPress)的速度有点慢感到有些挣扎。我有一个客户开发商店,其统计数据如下
5319种产品2437种产品类别
类别的层次结构如下/产品类别/按型号/accord-ch1-1998-2003/车身/附件加载默认/店铺/页面(仅显示子类别)需要14秒。
逐步浏览这些类别,每个类别的加载时间都更短/产品类别/按型号/加载需要6秒钟/产品类别/按型号/accord-ch1-1998-2003/加载需要1.5秒/产品类别/按型号/accord-ch1-1998-2003/车身/加载需要1.5秒。
这些类别都不包含产品,只包含子类别。
最后,产品类别/按型号/accord-ch1-1998-2003/车身/附件任何产品的第一类都需要600 ms的加载时间。
加载时间==到达第一个字节的时间-一旦服务器发送数据,我们将在几毫秒后准备好DOM。主题负载约为每页500Kb。
我确信问题在于它在更高级别类别中执行的大量SQL查询。在发布这篇文章之前,我将该站点从原来的低负载共享Dell R410服务器迁移到类似硬件上的VPS上,这样我就可以更多地使用apache或MySQL了。服务器性能良好。负载低。
我尝试过使用高级缓存和对象缓存(都是基于memcache的),但没有看到太多好处。当我查看一般的MySQL日志时,我看到这些海量查询过去了。根据慢速查询日志,它们都不慢,我只能假设这是它们的绝对数量,或者它对taxo表的连接。SQL缓存也已启用,但似乎也没有多大帮助。
(所有其他页面加载速度都很快,只有这些Woo类别会导致问题)。
使用SQL Profiler,我不认为SQL的速度慢,更多的PHP占用了大约100%的CPU负载,而WooCommerce做了一些事情。
总查询时间:89次查询0.09768s。15.40064s生成的页面(99.37%PHP,0.63%MySQL)
以前有没有人经历过这种行为?我的想法快用完了!
编辑
我确信这与在不必要的术语上进行Woo循环有关。商店主页(/商店/)会进行如下查询
http://pastebin.com/jsiaYenq 两次返回约13000行。
另一个类似的查询http://pastebin.com/B9xhFLFe 返回几乎相同的行数。
SQL快速返回这些查询,但NewRelic证明WooCommerce正在尝试处理这些海量数据集,这些数据集消耗了100%的CPU,需要大约25秒才能完成。
New Relic显示,该应用程序长期处于“woocommerce”阶段。
我相信这就是问题所在!