นี่คือวิธีใช้แท็กแคชในบริบทของบล็อกที่กำหนดเองซึ่งฉันได้ลองและใช้งานได้ แต่ฉันคิดว่ามันใช้กับบริบทอื่น ๆ
ใช้แท็ก drupal เริ่มต้น
ในอาร์เรย์บิลด์คุณสามารถระบุcache > tags > node_list
และเนื้อหาบล็อกนี้จะได้รับการทำให้ใช้งานไม่ได้ (รีเฟรช) เมื่อใดก็ตามที่ NODE ถูกเปลี่ยนโดยไม่ต้องทำอะไรเลยในส่วนของคุณ
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
],
);
}
อีกทางหนึ่งคุณสามารถใส่หนึ่งโหนดหรือมากกว่านั้น / คำศัพท์ / ID ผู้ใช้เพื่อตรวจสอบความถูกต้องของอาร์เรย์ในโหนดหรือเงื่อนไขเฉพาะดังที่แสดงในรหัสความคิดเห็นด้านบน หมายเหตุ: คุณสามารถผสมและจับคู่โหนดเงื่อนไขผู้ใช้และแท็กที่กำหนดเองได้ตามที่เห็นสมควร
ใช้แท็กของคุณเอง
หากคุณต้องการมีวิธีการล้างอาร์เรย์สำหรับสร้างของคุณเองเพิ่มแท็กที่ไม่ซ้ำกันที่กำหนดเองใน build อาร์เรย์ (สตริงที่ไม่ซ้ำกันจะทำ)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
และในการโทรตรรกะรหัสที่กำหนดเองinvalidateTags
ของคุณด้วยแท็กของคุณเอง
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
ถ้าคุณต้องการอ่านเพิ่มเติมเกี่ยวกับdrupal 8 cache internals