다음은 시도하고 작동하는 사용자 정의 블록의 컨텍스트에서 캐시 태그를 사용하는 방법이지만 다른 컨텍스트에도 적용됩니다.
기본 드루팔 태그 사용
빌드 배열에서 지정 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를 넣을 수 있습니다. 참고 : 노드, 용어, 사용자 및 사용자 정의 태그를 적절하게 혼합하여 일치시킬 수 있습니다.
자신의 태그를 사용하십시오
빌드 배열을 지우는 고유 한 방법을 원한다면 빌드 배열에 사용자 정의 고유 태그를 추가하십시오 (유일한 문자열은 수행합니다)
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에 대한 자세한 내용을 보려면