web-dev-qa-db-ja.com

データベースに保存されたキャッシュを手動でクリアする場合、どのテーブルを空にする必要がありますか?

D8より前に手動でキャッシュをクリアする前に、cache_で始まるすべてのテーブルを切り捨てることができました。

Drupal 8には、cache_で始まるテーブルがまだありますが、cachetagsテーブルもあります。

キャッシュを手動でクリアする必要がある場合でも、D [8]のアドバイスはcache_*を切り捨てることですか? cache_*テーブルとともにcachetagsテーブルを切り捨てることは安全/必須/推奨ですか?

私は別のことをしているcontribモジュールがあるかもしれないことを知っています、私はコアが何をするか、そして一般的にDrupal 8の「ベストプラクティス」と見なされるものに興味があります。

13
Clive

drupal 8では、手動でクリアする必要がある安全なテーブルを探している場合は、cache_で始まるテーブルをクリアし、cachetagsテーブルも切り捨てます。

Drushを使用している場合は、このコマンドを使用してキャッシュをクリアします。

ドラッシュキャッシュ再構築

6
Rahul Mishra

この記事cachetagsによると、キャッシュオブジェクトが格納されているときに設定されるため、このテーブルも切り捨てても安全です。キャッシュタグはキャッシュオブジェクトを識別し、関連するすべてのオブジェクトを一度に取得できます。

3
Paul Bönisch

これはとても便利です。必要に応じて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
André

あなたはワンライナーのためにこれを行うことができます:

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

必要なだけcache_接頭辞を付けて追加します。

0
Dan