Điểm:0

Những thẻ bộ đệm nào có thể được kích hoạt khi thay đổi biến trạng thái?

lá cờ ca

Nếu tôi muốn mảng kết xuất của mình cho Drupal biết rằng nó sẽ được xây dựng lại khi, giả sử, nút 1 thay đổi, tôi có thể làm điều gì đó như thế này:

$my_render_array = [
  ...
  '#cache' => [
    'thẻ' => [
      'nút:1',
    ],
  ],
]; 

Làm cách nào tôi có thể nói với Drupal rằng mảng kết xuất của tôi sẽ được xây dựng lại khi biến trạng thái foo thay đổi?

Tôi đã thử điều này nhưng nó không hoạt động:

$my_render_array = [
  ...
  '#cache' => [
    'thẻ' => [
      'trạng thái: foo',
    ],
  ],
];

Đang chạy:

thanh drush sset foo

Không kích hoạt việc vô hiệu hóa bộ đệm của tôi.

Hiện tại, đây là quy trình gồm hai bước đối với tôi, tôi cần làm một việc như sau:

$my_render_array = [
  ...
  '#cache' => [
    'thẻ' => [
      'some_custom_tag_that_i_invented',
    ],
  ],
];

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

Lõi Drupal dường như sử dụng các thẻ bộ đệm ở dạng "trạng thái:...", mặc dù không nhiều và chỉ trong các thử nghiệm tự động:

# grep -R lõi 'invalidateTags'|trạng thái grep
lõi/mô-đun/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);

# grep -R 'trạng thái:jsonapi__entity_test_filter_access_blacklist' lõi
lõi/mô-đun/jsonapi/kiểm tra/src/Functional/EntityTestTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
lõi/mô-đun/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
lõi/mô-đun/jsonapi/tests/src/Functional/CommentTest.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
lõi/mô-đun/jsonapi/src/Access/TemporaryQueryGuard.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);

# grep -R 'jsonapi__entity_test_filter_access_blacklist' lõi
lõi/mô-đun/jsonapi/kiểm tra/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()]);
lõi/mô-đun/jsonapi/tests/src/Functional/CommentTest.php: Cache::invalidateTags(['state:jsonapi__entity_test_filter_access_blacklist']);
lõi/mô-đun/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', []);
lõi/mô-đun/jsonapi/src/Access/TemporaryQueryGuard.php: $cacheability->addCacheTags(['state:jsonapi__entity_test_filter_access_blacklist']);
Jaypan avatar
lá cờ de
Tôi không thấy lõi Drupal cung cấp bất kỳ thẻ bộ đệm nào cho trạng thái, vì vậy tôi nghĩ bạn phải sử dụng thẻ tùy chỉnh của riêng mình.
lá cờ ca
Cảm ơn. Đó sẽ không phải là một tính năng xấu. Tôi đã mở một yêu cầu tính năng tại https://www.drupal.org/project/drupal/issues/3258064

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.