Quali tabelle devono essere svuotate quando si cancella manualmente la cache memorizzata nel database?


13

Prima di D8 per cancellare manualmente la cache si potevano troncare tutte le tabelle che iniziano con cache_.

In Drupal 8 ci sono ancora tabelle che iniziano cache_, ma c'è anche una cachetagstabella.

Il consiglio in D8 deve ancora troncarsi cache_*se è necessario svuotare manualmente la cache? È sicuro / richiesto / consigliato troncare il cachetagstavolo insieme ai cache_*tavoli?

Sono consapevole che potrebbero esserci moduli contrib che fanno le cose in modo diverso, sono per lo più interessato a ciò che fa core e a ciò che è considerato "best practice" per Drupal 8 in generale.


Puoi solo vedere cosa cancella tutto il pulsante cache.
Eyal,


Tutte le tabelle della cache sono sicure per il troncamento, tuttavia non le hanno completamente rimosse.
hamza.gt

Risposte:


6

In drupal 8 se stai cercando le tabelle sicure che devono essere cancellate manualmente, cancella le tabelle iniziando con cache_ e troncando anche la tabella delle cache.

Se stai usando drush, usa questo comando per cancellare la cache-

Drush ricostruire la cache


3

Secondo questo articolo cachetags vengono impostati quando gli oggetti cache vengono archiviati, quindi dovrebbe essere sicuro troncare anche questa tabella. I cachetag identificano gli oggetti cache e puoi ottenere tutti gli oggetti correlati contemporaneamente.


Ho testato e la tabella può essere troncata senza problemi (o solo con il potenziale problema di prestazioni). Viene ricreato quando l'entità viene caricata ma ... Non so perché se si elimina un'istanza di entità i tag salvati nelle cache sono già nella tabella. Penso che debba essere rimosso.
estoyausente,

Presumo che i dati dalla tabella delle cache siano rimossi durante l'esecuzione cron e ciò che vedi dopo la rimozione dell'entità sono solo gli avanzi
Paul Bönisch,

0

Questo è molto utile. Sostituisci dbname secondo necessità:

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

Potresti farlo per un one-liner:

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

Aggiungi quanti ne vuoi con il prefisso cache_.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.