데이터베이스에 저장된 캐시를 수동으로 지울 때 어떤 테이블을 비워야합니까?


13

D8 이전에 캐시를 수동으로 지우려면로 시작하는 모든 테이블을자를 수 cache_있습니다.

Drupal 8에는 여전히로 시작하는 테이블이 있지만 테이블 cache_도 있습니다 cachetags.

cache_*캐시를 수동으로 지워야하는 경우 D8의 조언이 여전히 잘 려야 합니까? cachetags테이블과 함께 테이블 을 자르는 것이 안전 / 필수 / 권장 cache_*됩니까?

나는 다른 방식으로 일을하는 contrib 모듈이있을 수 있다는 것을 알고 있습니다. 저는 코어가하는 일과 Drupal 8의 일반적인 "우수 사례"에 주로 관심이 있습니다.


모든 캐시 버튼 지우기가 무엇인지 확인할 수 있습니다.
Eyal


모든 캐시 테이블은 잘 리기에 안전하지만 완전히 제거하지는 않았습니다.
hamza.gt

답변:


6

drupal 8에서 수동으로 지워야하는 안전한 테이블을 찾고 있다면 cache_로 시작하는 테이블을 지우고 cachetags 테이블도 자릅니다.

drush를 사용하는 경우 캐시 지우기를 위해이 명령을 사용하십시오.

캐시 재 구축


3

이 기사 에 따르면 cachetags캐시 객체가 저장 될 때 설정 되므로이 테이블도 잘리는 것이 안전해야합니다. 캐시 태그는 캐시 객체를 식별하며 모든 관련 객체를 한 번에 얻을 수 있습니다.


테스트 한 결과 문제없이 (또는 잠재적 성능 문제가있는 경우에만) 테이블이 잘릴 수 있습니다. 엔티티가로드 될 때 다시 작성되지만 ... 엔티티 인스턴스를 삭제하면 cachetags에 저장된 태그가 이미 테이블에있는 이유를 모르겠습니다. 나는 그것을 제거해야합니다.
estoyausente

cron 실행시 cachetags 테이블의 데이터가 제거되고 엔터티 제거 후에 남은 내용이 남은 것으로 가정합니다.
Paul Bönisch

0

이것은 매우 편리합니다. 필요에 따라 dbname을 교체하십시오.

DB_NAME="dbname"

mysql -uroot -proot --execute="SELECT concat('TRUNCATE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '${DB_NAME}' AND TABLE_NAME LIKE '%cache%'" | sed 1d | mysql -uroot -proot ${DB_NAME};

0

하나의 라이너를 위해이 작업을 수행 할 수 있습니다.

drush sqlq "TRUNCATE cache_default;TRUNCATE cache_bootstrap;TRUNCATE cache_container;TRUNCATE cache_discovery;TRUNCATE cache_data;" -l <uri> --no-interaction

원하는만큼 cache_ 접두사를 추가하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.