我有超过25 meta在WooCommerce订单。有时我只需要1元值,有时,我需要10个或更多。
我把 meta的顺序拉如下。get_post_meta( int $post_id, string $key = '', bool $single = false )
当我需要1个 meta值时,我只做一次。当我需要10个元值时,我把每一个元值的名字按上面的语句拉10次。
我的问题是,当我运行get_post_ meta一次,wordpress对服务器进行一次数据库查询?当我在不同的自定义管理页面上拉其他10个元数据时,它对服务器进行10次数据库查询?
或者在单个get_post_meta上,WordPress会提取与该帖子相关的所有元数据并放入缓存,然后在其他地方,当我为同一订单提取其他10个元数据时,它会从缓存中使用,而不是额外的数据库查询。
我问的原因是,我可以将所有 meta存储在一个键中,也可以使用json_encode保存。但不确定是单独存储还是组合存储是最佳的。当我需要1个元数据时,我仍然需要拉取它,并使用json_decode,这将使用计算能力以及数据库查询到服务器。
我希望问题是清楚的,让我知道如果任何澄清需要。谢谢阅读。
1条答案
按热度按时间6jjcrrmo1#
函数
get_post_meta
在WP内核中定义/wp-includes/post.php
从该高速缓存中访问post meta数据。如果它不在缓存中,它将从表中读取并设置到缓存中。因此,下一次,它将从缓存中阅读。您可以看到下面的主要部分。您可以在文件
wp-includes/meta.php
中看到第577行附近的代码