Caching 如何在Drupal8中以编程方式清除缓存?

Caching 如何在Drupal8中以编程方式清除缓存?,caching,drupal,drupal-8,Caching,Drupal,Drupal 8,我正在Drupal8网站上工作。这个网站正在运行。我最近搬到了另一台机器上 它显示的错误如下: Recoverable fatal error: Argument 1 passed to Drupal\Component\DependencyInjection\Container::__construct() must be of the type array, boolean given, called in [DRUPAL- PATH]/core/lib/Drupal/Core/D

我正在Drupal8网站上工作。这个网站正在运行。我最近搬到了另一台机器上

它显示的错误如下:

Recoverable fatal error: Argument 1 passed to 

Drupal\Component\DependencyInjection\Container::__construct() must be of

 the type array, boolean given, called in [DRUPAL-

PATH]/core/lib/Drupal/Core/DrupalKernel.php on line 883 and defined in 

[DRUPAL-PATH]/core/lib/Drupal/Component/DependencyInjection/Container.php

 on line 119 #0 [DRUPAL-PATH]/core/includes/bootstrap.inc(550): 

_drupal_error_handler_real(4096, 'Argument 1 pass...', 

'/Applications/M...', 119, Array)

我需要以编程方式清除缓存。

通过SQL

TRUNCATE `cache_bootstrap`;
TRUNCATE `cache_config`;
TRUNCATE `cache_container`;
TRUNCATE `cache_data`;
TRUNCATE `cache_default`;
TRUNCATE `cache_discovery`;
TRUNCATE `cache_dynamic_page_cache`;
TRUNCATE `cache_entity`;
TRUNCATE `cache_menu`;
TRUNCATE `cache_render`;
TRUNCATE `cache_rest`;
TRUNCATE `cachetags`;
TRUNCATE `cache_toolbar`;
德鲁什的

drush cr all
drush cache-rebuild
//or you can use
drush cr
试试下面

cache_clear_all() // For Drupal-7

drupal_flush_all_caches() // For Drupal-8

如果要清除特定的缓存,如渲染缓存,则可以运行以下代码:

\Drupal::service('cache.render')->invalidateAll()
如果要清除所有缓存,请尝试:

drupal_flush_all_caches()
以下服务实现了
CacheBackendInterface
,并具有将所有缓存项标记为无效的
invalidateAll()
方法:

cache.bootstrap
cache.config
cache.data
cache.default
cache.discovery
cache.entity
cache.menu
cache.render
cache.static

以编程方式使用PHP 只需在要清除缓存的位置使用此方法:

drupal_flush_all_caches();
还可以使用以下方法清除缓存:

由管理员界面提供

导航到/admin/config/development/performance和​单击“清除所有缓存”按钮

德鲁什的

drush cr all
drush cache-rebuild
//or you can use
drush cr
By update.php 运行update.php(/update.php)是清除缓存的另一种方法

按SQL执行 删除以“cache_”开头的表中的所有数据,如下所示:

TRUNCATE cache_config;
TRUNCATE cache_container;
TRUNCATE cache_data;
TRUNCATE cache_default;
TRUNCATE cache_discovery;
TRUNCATE cache_dynamic_page_cache;
TRUNCATE cache_entity;
TRUNCATE cache_menu;
TRUNCATE cache_render;
TRUNCATE cache_toolbar;
其他方法:

$variables['#cache']['max-age'] = 0;

\Drupal::service('page_cache_kill_switch')->trigger();

cache_clear_all() // For Drupal-7

drupal_flush_all_caches() // For Drupal-8

如果要清除特定缓存(如渲染缓存),则可以运行以下代码:

\Drupal::service('cache.render')->invalidateAll();
\Drupal::service("router.builder")->rebuild();
如果要清除特定缓存(如路由缓存),则可以运行以下代码:

\Drupal::service('cache.render')->invalidateAll();
\Drupal::service("router.builder")->rebuild();

这应该是选择的答案,因为OP说的是“以编程方式”。正如sreekanth kuriyala所提到的,它有一个函数:
drupal\u flush\u all\u caches()
如果你想更细粒度,那么就计算出缓存ID和
\drupal::service('cache.render')->invalidate($cid)