Drupal 8 缓存。相对日期缓存问题。字段应显示“昨天”但仍显示“今天”

时间:2021-01-13 14:14:21

标签: drupal drupal-8 drupal-cache

Drupal 8.

请帮助找到最佳解决方案。

我有节点应该显示创建日期。 如果今天创建的节点文本应该是 - “今天” 如果昨天 - “昨天”。 在其他情况下,应仅显示创建日期 - 22/02/1999。

我创建了自定义字段格式化程序来实现这一点。 一切正常,除了一件事 - 缓存

drupal 缓存今天创建的节点,明天应该显示“昨天”。但是明天它仍然会显示“今天”,直到我手动清除缓存。缓存清除后,它会说“昨天”,就像它应该的一样。

请帮我解决这个问题。 我会很高兴避免使用

'#cache' => [
  'max-age' => 0,
]

1 个答案:

答案 0 :(得分:2)

在我看来,您的问题的最佳解决方案是将 '#cache' => ['max-age' => 0] 用于您的自定义字段格式化程序,因为每次节点命中时只需重新渲染该字段。这对节点页面的性能影响不大。

但是如果你一定要避免使用缓存 max-age,你可以试试下面的方法:

  1. 创建一个每天凌晨 0 点执行的定时任务
  2. 该 Cron 将查询过去 48 小时内创建的节点。
  3. 使这些节点的缓存标记 'node: <nid>' 无效。
相关问题