it-swarm.com.de

Drupal 8, lösche bestimmten Cache

In Drupal 8) haben wir den Befehl drush cr , der die neue Version des veralteten drush cc all . Wir hatten jedoch ein drush cc-Menü und einige spezifischere Cache-Löschbefehle. Wenn ich versuche, sie auszuführen, erhalte ich einen seltsamen Symfony-Fehler.

Was ich erreichen möchte: Finden Sie die Ersatzbefehle für drush cc (spezifischer Cache) in Drupal 8.

Was ich bereits überprüft/versucht habe: Die Dokumentation ist etwas knapp: https://drushcommands.com/drush-8x/cache/cache-clear /

Manuelles Eingeben aller Arten von Befehlen wie Drush-Cr-Menü usw. Sie scheinen nicht zu funktionieren.

Grüße, Oleg

7
Oleg Videnov

drush ist momentan noch nicht dazu bereit (soweit ich weiß), daher müssen Sie benutzerdefinierte Drush-Skripte schreiben oder eine andere Ausführung durchführen. drush cr erstellt den gesamten Cache neu, drush cc funktioniert nicht mit drupal8.

die Methode drupal_flush_all_caches zeigt, wie alle Core-Caches geleert werden.

$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

Sie können den Befehl DrupalConsole cache:rebuild Verwenden und im interaktiven Modus den zu löschenden Cache aus der Liste auswählen.

drupal cache:rebuild

Sie können auch den Befehlsalias cr verwenden

drupal cr

Wenn Sie den Cache kennen, den Sie löschen möchten, versuchen Sie, ihn als Argument zu übergeben

drupal cr menu
4
jmolivas

Drush cc funktioniert immer noch (oder wieder?) Wie in Version 7, z. B.: drush cc css-js oder drush cc render Siehe den Link, den Sie bereits angegeben haben: https://drushcommands.com/drush-8x/cache/cache-clear/

wenn Sie einfach drush cc Sie erhalten eine Liste mit Optionen. ('Menü' gehört nicht dazu)

$ 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

Verwenden Sie das Modul Clear Specific Cache ( https://www.drupal.org/project/ccos ).

Mit dem Modul "Spezifischen Cache löschen" können Sie den Cache des einzigen/spezifischen Entitätstyps (z. B. Block, Knoten, Ansichtsblock, Ansichtsseite usw.) über Kontextlinks, das lokale Aufgabenmenü und die Dropdown-Schaltfläche für Operationen löschen.

0
Ravi singh