【问题标题】:Using WordPress, have dynamic query, want to avoid caching the results使用WordPress,有动态查询,想避免缓存结果
【发布时间】:2020-03-21 06:07:31
【问题描述】:

想关闭网站的缓存,但我确实想避免在某些区域进行缓存。想知道最好的方法。

首先,我从 API 中提取数据以检查顾问的“在线”状态。 接下来,我将它(以及任何其他可能更改的数据)存储在 CPT 中。 同时,我存储了一个随机字符串(我可以稍后对其进行排序,以呈现随机顺序)。

我在每次页面加载时都从 API 中提取数据,因为我需要实时数据。这让我感到畏缩,但我不知道其他方式。这部分没有缓存。

但是,当我显示“顾问”列表时,我按在线状态对它们进行排序,然后是随机字符串。这是为了公平地确定谁在首屏,以及接近结果的开头。

嗯,这些都是用 PHP 生成的,因此生成的 HTML 会被缓存。

我阅读了一些关于 WP Rest API 的信息,也许这有助于提高查询速度,但对缓存的 HTML 没有帮助,对吧?

那么,无论我如何查询数据(REST API、WP_Query),我是否假设我必须使用 JavaScript 遍历数据以避免它被服务器的全页缓存解决方案缓存?

如果我仍然使用 WP_Query,并且我使用 PHP 来显示结果,我可以只从 JavaScript 调用 PHP 函数吗?

网站的每个页面都将显示部分或全部顾问(例如:主页 8 个顾问,“顾问”页面显示所有顾问,“顾问”类别页面,以及每个其他页面页脚中的 4 个顾问),所以关闭缓存没有意义。

任何方向将不胜感激!提前致谢。

【问题讨论】:

  • 正确。如果您想规避缓存,则必须通过 AJAX 填充“顾问”列表。这样,您的网站将继续提供 HTML 页面,同时保持一定的动态性。
  • 延伸阅读:AJAX in Plugins - WordPress.org(虽然标题包含“插件”一词,但事实是同样的东西也可以应用于主题。)

标签: javascript php wordpress rest caching


【解决方案1】:

用 AJAX 做这件事不是更好吗?

或者,我很确定有一行 PHP 可以添加到页面中,这样它们就不会被缓存。例如,Woocommerce 有时需要这个。我想这取决于您使用的缓存插件。你用的是哪一个?

或者,例如 WP Super Cache 有一个区域,您可以在其中排除某些页面的缓存。在设置 -> WP super chache -> 高级 -> 接受的文件名和拒绝的 URI 下。

【讨论】:

    猜你喜欢
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多