Drupal 8ページには、当日に有効な日固有の要素があります。キャッシュタグを追加して、定期的にニス/高速でパージできるようにしたいと思います。 Drupal8でキャッシュタグを定期的に無効にする方法はありますか?
ここにいくつかのFAQ/Asがあります:
max-ageを使用できますが、ページレベルのヘッダーであるため、複数のコンポーネントが設定しようとすると、非常に混乱する可能性があります。キャッシュタグは、コンポーネントに対して一種の自己完結型です。
これは、環境に固有であるため、明示的なcron /ジョブを避けてください。
1日の最初のヒットでキャッシュをフラッシュするコードは次のとおりです。
public function build() {
...
...
...
$this->handleCacheTag($build['#cache']['tags']);
}
protected function handleCacheTag(&$tags) {
// Get the current date number.
$current_date_number = date('z');
$last_date_number = \Drupal::state()->get('module_name.foo.date_counter', $current_date_number);
// If last date in settings is different from current day, invalidate
// tags.
if ($last_date_number < $current_date_number) {
$invalid_tags = range($last_date_number, $current_date_number);
array_walk($invalid_tags, function(&$invalid_tag){
$invalid_tag = 'foo:date.' . $invalid_tag;
});
Cache::invalidateTags($invalid_tags);
}
\Drupal::state()->set('module_name.foo.date_counter', $current_date_number);
$tags[] = 'foo:date.' . $current_date_number;
}