Puncte:0

Ce etichete de cache pot fi declanșate de o schimbare a variabilelor de stare?

drapel ca

Dacă vreau ca matricea mea de randare să îi indice lui Drupal că ar trebui reconstruită atunci când, de exemplu, nodul 1 se schimbă, pot face ceva de genul acesta:

$my_render_array = [
  ...
  '#cache' => [
    'etichete' => [
      „nodul:1”,
    ],
  ],
]; 

Cum pot să-i spun lui Drupal că matricea mea de randare ar trebui să fie reconstruită când variabila de stare foo schimbări?

Am incercat asta dar nu merge:

$my_render_array = [
  ...
  '#cache' => [
    'etichete' => [
      „state:foo”,
    ],
  ],
];

Alergare:

drush sset foo bar

Nu declanșează o invalidare a memoriei cache.

În acest moment, acesta este un proces în doi pași pentru mine, trebuie să fac ceva de genul acesta:

$my_render_array = [
  ...
  '#cache' => [
    'etichete' => [
      „some_custom_tag_that_i_invented”,
    ],
  ],
];

drush sset foo bar
drush php "\Drupal::service('cache_tags.invalidator')->invalidateTags(['some_custom_tag_that_i_invented'])"

Core Drupal pare să folosească etichete cache sub forma „state:...”, deși nu mult și numai în cadrul testelor automate:

# grep -R 'invalidateTags' core|grep stare
core/modules/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);

# grep -R „state:jsonapi__entity_test_filter_access_blacklist” de bază
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” de bază
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
drapel de
Nu văd că nucleul Drupal oferă etichete cache pentru stare, așa că cred că ar trebui să folosiți propria etichetă personalizată.
drapel ca
Mulțumiri. Asta nu ar fi o caracteristică rea. Am deschis o solicitare de funcții la https://www.drupal.org/project/drupal/issues/3258064

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.