İşte ben denedim ve çalışır özel bloklar bağlamında önbellek etiketleri nasıl kullanılır ama diğer bağlamlar için geçerli olduğunu düşünüyorum
Varsayılan drupal etiketlerini kullan
Yapı dizisinde belirtebilirsiniz cache > tags > node_list
ve HERHANGİ BİR NODE sizin tarafınızdan yapılacak başka bir şeyle değiştirilmediğinde bu blok içeriği geçersiz hale gelir (yenilenir)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['node_list'], //invalidate when any node updates
//'tags' => ['node:1','term:2'], //invalidate when node 1 or term 2 updates
],
);
}
Alternatif olarak, yukarıdaki kod açıklamasında gösterildiği gibi diziyi belirli düğümler veya terimler üzerinde geçersiz kılmak için bir veya daha fazla düğüm / terim / kullanıcı kimliği koyabilirsiniz. Not: Düğümleri, terimleri, kullanıcıları ve özel etiketleri uygun gördüğünüz şekilde karıştırabilir ve eşleştirebilirsiniz.
Kendi etiketlerinizi kullanın
derleme dizinizi temizlemenin kendi yoluna sahip olmak istiyorsanız, özel benzersiz etiketinizi derleme dizisine ekleyin (herhangi bir benzersiz dize yapar)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
ve invalidateTags
kendi kodunuzla özel kod mantık çağrınızda
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
drupal 8 önbellek dahili bilgileri hakkında daha fazla bilgi edinmek istiyorsanız