web-dev-qa-db-ja.com

Drupal 8、特定のキャッシュをクリア

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

7
Oleg Videnov

現在、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();
  }
7
rémy

DrupalConsole cache:rebuildコマンドを使用し、インタラクティブモードを使用して、クリアするキャッシュをリストから選択できます。

drupal cache:rebuild

コマンドエイリアスcrを使用することもできます

drupal cr

クリアしようとしているキャッシュがわかっている場合は、引数として渡してみてください

drupal cr menu
4
jmolivas

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
2
Roberto Dilari

Clear Specific Cachehttps://www.drupal.org/project/ccos )モジュールを使用します。

特定のキャッシュをクリアモジュールは、コンテキストリンク、ローカルタスクメニュー、および操作のドロップボタンから、単一/特定のエンティティタイプ(ブロック、ノード、ビューブロック、ビューページなど)のキャッシュをクリアするのに役立ちます。

0
Ravi singh