0

8.

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

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

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

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

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

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

1 回答 1

2

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

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

  1. 创建一个每天凌晨 0 点执行的 cronjob
  2. 该 Cron 将查询在过去 48 小时内创建的节点。
  3. 'node: <nid>'使这些节点的缓存标记无效。
于 2021-01-14T05:01:45.867 回答