Drupal 8では、コマンドdrush crが廃止予定のdrush cc all。しかし、drush ccメニューと特定のキャッシュ消去コマンドがいくつかありましたが、それらを実行しようとすると、symfonyの奇妙なエラーが発生します。
達成したいこと:drush cc(特定のキャッシュ)の代替コマンドをDrupal 8。
すでに確認/試行したこと:ドキュメントは少々不足しています: https://drushcommands.com/drush-8x/cache/cache-clear/
Drush cr menuなどのすべてのタイプのコマンドを手動で入力します。それらは機能していないようです。
よろしく、Oleg
現在、drushはその準備ができていません(私の知る限り)。そのため、カスタムのDrushスクリプトを作成するか、その他の実行を行う必要があります。 drush crはキャッシュ全体を再構築し、drush ccはdrupal8では動作しません。
メソッド drupal_flush_all_caches は、すべてのコアキャッシュをフラッシュする方法を示しています。
$module_handler = \Drupal::moduleHandler();
// Flush all persistent caches.
// This is executed based on old/previously known information, which is
// sufficient, since new extensions cannot have any primed caches yet.
$module_handler->invokeAll('cache_flush');
foreach (Cache::getBins() as $service_id => $cache_backend) {
$cache_backend->deleteAll();
}
// Flush asset file caches.
\Drupal::service('asset.css.collection_optimizer')->deleteAll();
\Drupal::service('asset.js.collection_optimizer')->deleteAll();
_drupal_flush_css_js();
// Reset all static caches.
drupal_static_reset();
// Invalidate the container.
\Drupal::service('kernel')->invalidateContainer();
// Wipe the Twig PHP Storage cache.
PhpStorageFactory::get('twig')->deleteAll();
// Rebuild module and theme data.
$module_data = system_rebuild_module_data();
/** @var \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler */
$theme_handler = \Drupal::service('theme_handler');
$theme_handler->refreshInfo();
// In case the active theme gets requested later in the same request we need
// to reset the theme manager.
\Drupal::theme()->resetActiveTheme();
// Rebuild and reboot a new kernel. A simple DrupalKernel reboot is not
// sufficient, since the list of enabled modules might have been adjusted
// above due to changed code.
$files = array();
foreach ($module_data as $name => $extension) {
if ($extension->status) {
$files[$name] = $extension;
}
}
\Drupal::service('kernel')->updateModules($module_handler->getModuleList(), $files);
// New container, new module handler.
$module_handler = \Drupal::moduleHandler();
// Ensure that all modules that are currently supposed to be enabled are
// actually loaded.
$module_handler->loadAll();
// Rebuild all information based on new module data.
$module_handler->invokeAll('rebuild');
// Clear all plugin caches.
\Drupal::service('plugin.cache_clearer')->clearCachedDefinitions();
// Rebuild the menu router based on all rebuilt data.
// Important: This rebuild must happen last, so the menu router is guaranteed
// to be based on up to date information.
\Drupal::service('router.builder')->rebuild();
// Re-initialize the maintenance theme, if the current request attempted to
// use it. Unlike regular usages of this function, the installer and update
// scripts need to flush all caches during GET requests/page building.
if (function_exists('_drupal_maintenance_theme')) {
\Drupal::theme()->resetActiveTheme();
drupal_maintenance_theme();
}
DrupalConsole cache:rebuild
コマンドを使用し、インタラクティブモードを使用して、クリアするキャッシュをリストから選択できます。
drupal cache:rebuild
コマンドエイリアスcr
を使用することもできます
drupal cr
クリアしようとしているキャッシュがわかっている場合は、引数として渡してみてください
drupal cr menu
Drush ccはまだ(または再び?)v7と同じように機能します。例:drush cc css-js
またはdrush cc render
既に提供したリンクをご覧ください: https://drushcommands.com/drush-8x/cache/cache-clear/
単にdrush cc
オプションのリストが表示されます。 (「メニュー」はそれらの1つではありません)
$ drush cc
Enter a number to choose which cache to clear.
[0] : Cancel
[1] : drush
[2] : theme-registry
[3] : router
[4] : css-js
[5] : module-list
[6] : theme-list
[7] : render
[8] : token
[9] : views
Clear Specific Cache( https://www.drupal.org/project/ccos )モジュールを使用します。
特定のキャッシュをクリアモジュールは、コンテキストリンク、ローカルタスクメニュー、および操作のドロップボタンから、単一/特定のエンティティタイプ(ブロック、ノード、ビューブロック、ビューページなど)のキャッシュをクリアするのに役立ちます。