如何解决附件元数据导致WordPress站点运行缓慢

时间:2019-01-06 作者:Arash Rabiee

随着时间的推移,我的WordPress网站开始变慢,两年后变得非常慢。我尝试了很多东西,例如:

改善了我的数据库,使用了缓存插件(WP Rocket和W3 Total cache),两者都很好,Rocket稍微好一点,但你必须为此付费,检查了我网站上分析的效果(停用slimstatanalytics将我的响应时间提高了20%),处理心跳(WP Rocket有一种控制心跳的方法)wp_posts 和wp_postmeta) 我的WordPress网站运行缓慢的主要原因是wp_postmeta, 不幸的是,WooCommerce在wp_postmeta 这会严重影响响应时间。

除此之外,还有一件事对速度有很大影响,那就是_wp_attachment_metadata 对于我的站点,它超过1024个字符。

我如何优化这个(_wp_attachment_metadata) 元数据而不丢失所需的所有图像大小?

最后,如果我改变meta_value 属于wp_postmeta 从…起longtextvarchar(2024) (我假设所有插件都会生成字符较少的元数据),然后对其进行索引。这会对WordPress的核心造成任何问题吗?

2 个回复
最合适的回答,由SO网友:Arash Rabiee 整理而成

我执行以下操作以提高性能,

将修订限制为3define(\'WP_POST_REVISIONS\', 3); 在wp\\U配置中。php迁移到另一个支持光速缓存的主机,该主机的性能比我以前的缓存解决方案稍好一些,将woocommerce更新为4+,将wordPress内存限制提高到512define(‘WP_MEMORY_LIMIT’, ‘256M’); 在wp\\U配置中。php或询问您的主机提供商从我的网站中删除了分析插件,并使用我的主机为我提供的选项,使用CDN进行图像和webp格式,我使用WPML进行翻译,因此我从插件设置中清除了历史记录,然后从WP_PREFIX_icl_strings 而且只翻译了所需的插件,这对我的网站有很大的影响;然而,我不得不使用database clean up plugin, 使用前备份一下,最后我使用了POD 插件并创建了一些不使用wordpress默认表的自定义post\\u类型,但这一个有点棘手,不推荐使用

SO网友:O. Jones

Rick James和我创建了(免费,GPL)Index WP MySQL for Speed 插件。它通过添加适合该表用例的数据库索引,解决了wp\\u posteta的一些性能问题。我自己在一个有几千种产品的Woo网站上使用它。(它也适用于用户、术语、选项和注释。)

如果您不想使用插件,可以使用phpmyadmin或其他类似工具进行同样的工作。下面是插件用来调整wp\\U Posteta的SQL数据定义语言。

在执行此操作之前,请确保。。。

您正在使用MySQL InnoDB表

ALTER TABLE wp_postmeta ADD UNIQUE KEY meta_id (meta_id);
ALTER TABLE wp_postmeta DROP PRIMARY KEY;
ALTER TABLE wp_postmeta ADD PRIMARY KEY (post_id, meta_key, meta_id);
ALTER TABLE wp_postmeta DROP KEY post_id;
ALTER TABLE wp_postmeta DROP KEY meta_key;
ALTER TABLE wp_postmeta ADD KEY meta_key (meta_key, post_id);
这些调整/添加的数据库键与WP core和Woo的常见查询模式相匹配。