我正在与一组大型Wordpress安装与50-150k的帖子,每个有40-50自定义字段。安装是非常基本的,有有限的插件(小于5个),和默认的Wordpress主题(即二十二个,等等)。这些站点位于1核,2GB RAM,SSD VPS服务器上.
这些都是私人安装,没有公共前端或网络流量。自动更新程序、自动更新核心和修订都是禁用的.
我在编辑贴子页面上没有特写图片或其他媒体,只有文本。这些网站是在Wordpress 5.6或更高版本(我知道他们可以更新到5.9.3,但怀疑这是问题)。
The管理员编辑post页面在访问时挂起25-45秒,然后最后加载。在大型的、基本的wordpress安装中,有什么方法可以修复或加速这个问题吗?在加载大量自定义字段数据( 50-100k+ posts)方面似乎存在问题。
以下是我的发现:
Any创意?对于具有许多自定义字段的post页面,这种比例的核心Wordpress后端函数有问题吗?
谢谢!
发布于 2022-07-10 00:41:45
正如birgire在评论中所建议的那样,我使用了QueryMonitor插件,并发现核心Wordpress Meta查询导致了这个问题。
在CSS技巧上深入讨论了问题和核心Wordpress元查询,并在Wordpress StackExchange 这里上讨论了另一个问题。
基本上,有一个查询填充了"Select“框,用于在"Edit”页面上添加自定义字段名(见下文)。

它遍历数据库,抓取帖子中的所有元键(或自定义字段名),以创建以前使用过的键/名称的列表。这使得使用Select来选择您已经使用过的键/名称变得很容易,而不是一次又一次地键入它。
显然,查询效率不高,当缩放到带有大量自定义字段的100K+帖子时,会导致大量的性能问题。
在这个时候,我找不到绝对的/容易的解决办法。CSS技巧师和其他人有更复杂的修复,但我真的想要一些简单的东西。幸运的是,有一个简单的解决方法可以解决StackOverflow用户Nic 建议的加载问题:
function set_postmeta_choice( $string, $post ) {
$meta_keys = array();
foreach(has_meta( $post->ID ) as $meta){
$meta_keys[] = $meta["meta_key"];
}
return $meta_keys;
}
add_filter( 'postmeta_form_keys', 'set_postmeta_choice', 10, 3 );只需将其放在主题文件夹中的functions.php文件的底部即可。这会将查询缩小到只有查找current post中使用的自定义字段键/名称,而不是所有帖子。
所以,这是一种权衡。它恢复速度、性能和加载时间,但使Select更不方便地添加更多自定义字段。
https://wordpress.stackexchange.com/questions/405867
复制相似问题