我可以为开发部署关闭缓存吗?


22

在开发平台上缓存可能会很麻烦。我可以关闭它吗?它会影响需要它的任何模块吗?

Answers:


19

安装devel模块,该模块为管理员添加了一个缓存清除选项。您会发现一个devel块可以添加到区域中以快速清除缓存,或者您可以安装管理菜单并在左上角获得快速菜单以清除Drupal中的各种缓存。

如果您喜欢命令行,请安装drush并使用该drush cc all命令清除站点缓存。请注意,如果适用于您的设置,当前drush cc不会清除Varnish缓存。


9

如果您使用的是Drupal 7,则始终可以将缓存设置为使用DrupalFakeCache,它通常仅在安装过程中使用。要进行设置,请将以下代码段放入settings.php中:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';

4

管理>站点配置中的“性能”页面将允许您启用/禁用选定站点元素的缓存。主题模板通常更持久地缓存,但可以在同一“性能”页面中刷新。

如果需要更定期地进行缓存刷新,则“管理菜单”模块将在工具栏中提供快捷方式-在主题开发期间,我发现自己不断刷新。


4

据我所知,没有任何模块需要缓存。如果您不想将其关闭,则可以在本Site Settings > Performance节中将其清除。

即使禁用了缓存,在清除缓存之前,Drupal也不会识别添加到主题的新文件。

Drupal.org上有一些有关清除缓存的不同方法的信息


4

除了Steve H提到的方法外,使用Devel模块还提供了更多选项,包括:

  • 在每次页面加载时重建主题高速缓存(如果您是themer,正在处理模板文件,则很有用)
  • 一个可以轻松访问空缓存功能和重新安装功能的块。

Performance下关闭了Devel模块并关闭了缓存后,您将在例行开发中遇到的唯一其他主要缓存是菜单路由器,可以使用Steve提到的Devel或Admin Menu对其进行重建。


4

需要注意的重要一件事是,如果您有很多样式表(无论是来自主题还是来自模块),那么关闭CSS文件优化都有可能破坏IE中的网站。

虽然实际上没有缓存,但它位于同一设置页面上,通常与缓存一起使用。

顺便说一句,管理菜单模块中的“刷新所有缓存”链接非常棒。


如果您担心IE,可以使用drupal.org/project/ie_css_optimizer
Realityloop 2011年

3

如果您使用的是Drupal 6,则如果您出于某些原因不希望安装较重的模块(例如Devel),则可以使用“ Cache Disable ”模块来完成该任务。


2

这是一个老问题,但我只是看到它与我正在进行的搜索相关而弹出。

几乎所有的缓存清除方法最终都会最终调用drupal_flush_all_caches。您可以在自己的代码中在各种情况下调用此方法。


2

有时与Drupal一起使用的缓存数量可能会变得疯狂。

这是禁用和清除Drupal缓存以及与之关联的常见方法。


禁用缓存:

请注意,您不能禁用所有缓存,因为Drupal需要其中的一些。

这是一种通过在设置文件中添加以下几行来禁用缓存的方法:

// Disable caches
$conf['cache'] = 0;
$conf['block_cache'] = 0;
$conf['views_skip_cache'] = TRUE;
$conf['page_compression'] = 0;
$conf['preprocess_css'] = 0;
$conf['preprocess_js'] = 0;

如果禁用所有缓存,则您的网站将非常慢,因此不建议在其他任何免除开发计算机的环境中使用它。


清除缓存

XCache

清除XCache缓存(如果使用):

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

或者,如果上述方法不起作用,请在管理面板(/ xcache-admin)中清除XCache中的缓存。

电子加速器

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

装甲运兵车

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OP缓存

如果与PHP> = 5.5一起使用,则清除PHP OPCache

drush eval "function_exists('opcache_reset') && opcache_reset();"

注意:按照以下说明,上面的CLI命令不会清除Apache的缓存:Opcache-PHP5.4及更低版本中的Clean缓存

记忆快取

如果您使用的是memcached,则应使用以下方法之一清除,重新启动或杀死您的memcached:

作为用户(其中​​之一):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

作为根(其中之一):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

还建议您在设置文件中的以下行中安装memcached模块:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

因此,将在标准Drupal清除缓存中清除Memcached缓存。

如果使用的是Varnish,建议安装Varnish模块并在设置文件中设置以下行:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

因此,Varnish缓存将在Drupal清除缓存中一起清除。

或者,您可以使用curl手动清除页面:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

阅读更多:如何清除清漆缓存?

Drupal

通过清除清除Drupal缓存:

drush cc all
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
drush eval 'menu_rebuild();'

您可以在/ admin / config / development / performance上执行相同的操作,因为有时以比从CLI更好的方式清除UI缓存。


这是用于清除所有缓存的有用的shell脚本:

#!/bin/bash
set -o xtrace
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
echo 'flush_all' | nc localhost 11211 # Flush Contents Of a Memcached Server
drush eval "function_exists('opcache_reset') && opcache_reset(); function_exists('xcache_clear_cache') && xcache_clear_cache();"
drush eval 'menu_rebuild();'
set -o xtrace -
echo done.

3
:该OPCache从CLI上无法正常工作,例如,参见解释stackoverflow.com/questions/17716639/...
拉斯

0

我们可以使用以下方法之一清除drupal中的缓存

1.)我们可以只访问URL your_domain / admin / config / development / performance并单击清除缓存按钮。

2.)如果我们已经安装了drush模块,我们可以通过drush cc all命令清除缓存 。

3.)如果我们具有数据库访问权限,则可以使用以下命令清除缓存(强烈建议不要直接访问生产数据库;如果您的站点“处于活动状态”,请使用一种替代方法)

TRUNCATE TABLE缓存;

TRUNCATE TABLE cache_block;

TRUNCATE TABLE cache_bootstrap;

TRUNCATE TABLE cache_field;

TRUNCATE TABLE cache_filter;

TRUNCATE TABLE cache_form; //注意与其他cache_ *表的重要区别-请参阅下面的更多信息

TRUNCATE TABLE cache_image;

TRUNCATE TABLE cache_menu;

TRUNCATE TABLE cache_page;

TRUNCATE TABLE cache_path;

TRUNCATE TABLE cache_token;

TRUNCATE TABLE cache_update;

4.)我们还可以在模块文件db_query(“ DELETE FROM {cache};”);中编写查询。

5.)我们可以使用drupal api清除缓存,例如cache_clear_all()

6.)我们还可以通过devel模块安装devel模块来清除缓存,并启用“ Developer / Development Block”,从而清除缓存

有关cache_form的更多信息,其目的与其他cache_表不同:

  • drupal_flush_all_caches()的核心api文档说:“不清除cache_form-正在进行的表单提交可能会中断。” 此问题仅适用于拥有活跃用户的网站,不适用于开发版本。

  • 本文中介绍的其他清除缓存的手动方法不会影响cache_form

  • 如果您需要在生产站点上缩小cache_form的大小,请参见Cache Form表的大小巨大

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.