ถ้าฉันต้องการให้อาร์เรย์เรนเดอร์ของฉันระบุให้ Drupal ทราบว่าควรสร้างใหม่เมื่อโหนด 1 เปลี่ยนแปลง ฉันสามารถทำสิ่งนี้ได้:
$my_render_array = [
...
'#แคช' => [
'แท็ก' => [
'โหนด:1',
]
]
];
ฉันจะบอก Drupal ได้อย่างไรว่าอาร์เรย์เรนเดอร์ของฉันควรได้รับการสร้างใหม่เมื่อตัวแปรสถานะ ฟู
การเปลี่ยนแปลง?
ฉันลองสิ่งนี้ แต่มันใช้งานไม่ได้:
$my_render_array = [
...
'#แคช' => [
'แท็ก' => [
'รัฐ:ฟู',
]
]
];
วิ่ง:
drush sset ฟูบาร์
ไม่ทำให้แคชของฉันใช้งานไม่ได้
ตอนนี้เป็นกระบวนการสองขั้นตอนสำหรับฉัน ฉันต้องทำสิ่งนี้:
$my_render_array = [
...
'#แคช' => [
'แท็ก' => [
'some_custom_tag_that_i_invented',
]
]
];
drush sset ฟูบาร์
drush php "\Drupal::service('cache_tags.invalidator')->invalidateTags(['some_custom_tag_that_i_invented'])"
Drupal core ดูเหมือนจะใช้แท็กแคชในรูปแบบ "สถานะ:..." แม้ว่าจะไม่มากและเฉพาะในการทดสอบอัตโนมัติเท่านั้น:
# grep -R แกน 'invalidateTags' | สถานะ grep
core/modules/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
# grep -R 'สถานะ: jsonapi__entity_test_filter_access_blacklist' หลัก
core/modules/jsonapi/tests/src/Functional/EntityTestTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/src/Access/TemporaryQueryGuard.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
# grep -R หลัก 'jsonapi__entity_test_filter_access_blacklist'
core/modules/jsonapi/tests/src/Functional/EntityTestTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: \Drupal::state()->set('jsonapi__entity_test_filter_access_blacklist', [$this->entity->getCommentedEntityId()]);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/tests/src/Functional/CommentTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
core/modules/jsonapi/src/Access/TemporaryQueryGuard.php: $blacklist = \Drupal::state()->get('jsonapi__entity_test_filter_access_blacklist', []);
core/modules/jsonapi/src/Access/TemporaryQueryGuard.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);