如何在 Drupal 8 中以编程方式清除缓存?
How to clear cache programmatically in Drupal 8?
我正在 Drupal 8 网站上工作。这个网站正在运作。我最近搬到了另一台机器。
显示如下错误:
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
drush cr all
在下面试试。
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();
还有其他清除缓存的方法:
由管理员 UI
导航至 /admin/config/development/performance 并单击“清除所有缓存”按钮。
通过 Drush
drush cache-rebuild
//or you can use
drush cr
来自 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 8 网站上工作。这个网站正在运作。我最近搬到了另一台机器。
显示如下错误:
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
drush cr all
在下面试试。
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();
还有其他清除缓存的方法:
由管理员 UI
导航至 /admin/config/development/performance 并单击“清除所有缓存”按钮。
通过 Drush
drush cache-rebuild
//or you can use
drush cr
来自 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();