gpt4 book ai didi

mysql - 1000 多个帖子的 Wordpress 慢元查询

转载 作者:行者123 更新时间:2023-11-30 22:51:53 24 4
gpt4 key购买 nike

问题

就选择日期而言,WordPress 元查询不如常规查询灵活。 WP Query 可以通过月数、星期几名称和许多其他选项来选择日期,这非常适合我的需要。

ACF 字段

事件日期、结束日期、死亡日期(某些分类法)、“重复(永远,直到)”

基本上我构建了一个元查询,它将获取今天的日期,或者可能重复出现的日期(因此每天、每月和每周),然后我通过 PHP 通过与每周的工作日名称进行比较来过滤所有内容,并且每月的天数。我还会检查以确保任何重复发布的帖子都不会在不应该出现的时候出现。

这是我一直使用的元查询数组,日期存储为 Ymd :

'relation' => 'OR', [ 'key' => 'event_date', 'value' => $date->format('md'), 'compare' => 'LIKE', 'type' => 'numeric' ], [ 'key' => 'death_date', 'value' => $date->format('md'), 'compare' => 'LIKE', 'type' => 'numeric' ], [ 'key' => 'how_often', 'value' => array('Daily', 'Monthly', 'Weekly'), 'compare' => 'IN' ]

从长远来看,此查询将检索约 130 篇帖子,包括元查询和其他相关查询,在 PHP 运行以过滤帖子后(需要 2.5 秒!)我剩下 78 篇帖子。

我尝试过的

我已经尝试通过非常具体地针对重复出现的帖子来更多地限制查询,例如指定 event_date必须是 <=查询的日期,或者 end_date>=查询日期或元 forever设置为 forever .但是,这对每月或每周重复的情况没有帮助,因为我无法切实计算这些日期。我已经加载了超过 10k 个帖子并使用了这个自定义元结构。它运行良好,最多约 1200 个帖子,然后该网站变得非常缓慢。包含 78 个帖子的页面目前需要大约 8-12 秒才能加载第一个字节。

我已尝试缓存此数据,但有人可能会在日历中的任何一天点击它,并且它可能不会被缓存,这会导致用户在他们看到网站上的任何内容之前等待 8-12 秒。

问题

  1. 通过 SQL 检索每月和每周重复发布的帖子的最佳方法是什么?
  2. 这实际上会加快我的页面加载速度还是会减慢速度?显然,帖子越多,对元数据的查询就越多,但分页并不是这个应用程序的真正选择。

最佳答案

  1. 我没有加快查询速度的解决方案。在 WordPress 中,大量数据有时会减慢加载/查询速度。不管你做什么,它仍然会超过 2 秒 +。 (这已经太多了)。

  2. 关于缓存选项,您可以构建一个将访问所有链接的机器人,因为日期范围是已知的,然后问题就解决了。类似的东西:(这只是一个例子)

     for($startdate ; $startDate < $endDate ; $startDate=addDayToDate($startDate)){
    file_get_contents($url.$startDate);
    }
  3. wp-rocket 缓存插件有一个选项可以让机器人预先缓存页面。因此无需在第一次实际访问页面时对其进行缓存。关于日历链接,我不知道它是否会访问它们,也不知道是否有办法设置预缓存机器人来访问您的日历链接。如果您可以提供链接,我可以询问他们是否可行。

关于mysql - 1000 多个帖子的 Wordpress 慢元查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27955043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com