Score:0

แท็กแคชใดที่สามารถทริกเกอร์ได้โดยการเปลี่ยนแปลงตัวแปรสถานะ

ธง ca

ถ้าฉันต้องการให้อาร์เรย์เรนเดอร์ของฉันระบุให้ 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']);
Jaypan avatar
de flag
ฉันไม่เห็นว่า Drupal core มีแท็กแคชสำหรับสถานะ ดังนั้นฉันคิดว่าคุณต้องใช้แท็กที่คุณกำหนดเอง
ca flag
ขอบคุณ. นั่นไม่ใช่คุณสมบัติที่ไม่ดี ฉันเปิดคำขอคุณสมบัติที่ https://www.drupal.org/project/drupal/issues/3258064

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา