如何清空Drupal Cache(没有Devel)

时间:2009-08-04 22:38:25

标签: drupal caching drupal-cache

如何清空Drupal缓存:

  • 没有 Devel模块
  • 没有在新节点中运行某些PHP语句等。
  • 无需进入数据库本身

实际上,您如何指示最终用户清除其缓存?

12 个答案:

答案 0 :(得分:44)

当您以管理员身份登录时(很明显,并非网站的每个用户都必须清除缓存),“管理>网站配置中应该有一个页面>表现“。

而且,在页面底部,应该有一个按钮(类似“清除缓存数据”)来清除缓存

据我记忆,Devel没有必要这样做,你真的不需要去数据库,也不需要运行一些自制的PHP代码。


作为参考,您可以查看How to Clear Drupal Server-side cache

答案 1 :(得分:20)

您还可以使用Drush模块,该模块允许您使用命令行执行流行的Drupal命令,例如“drush cron”或“drush cache clear”。

答案 2 :(得分:7)

如果要从模块中清除缓存,可以使用以下代码。

drupal_flush_all_caches();

答案 3 :(得分:4)

我有最简单的解决方案。安装admin_menu模块(实际上不仅仅是为了这个目的,一旦你安装了这个模块,你肯定不会后悔,链接:http://drupal.org/project/admin_menu)。好的,然后在新出现的顶部下拉菜单中悬停您的favicon和下拉菜单,您将看到:刷新所有缓存菜单。一键 - 一次冲洗。此外,您可以将所有缓存刷新在一起或选择要刷新的内容:页面,菜单,主题等。尝试,您将永远不会回去)

答案 4 :(得分:3)

如果你能通过点击获得行为,那将是非常棒的:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
但你不能。
但是我确实想要通过管理菜单注意用于短切的URL(使用后一部分):
http://drupal.local. /admin/settings/performance

答案 5 :(得分:1)

按需清算可以在Administer>中完成。网站配置>性能

您应该将cron作业设置为每小时运行一次(或根据您的喜好间隔运行)。

当在Drupal上运行cron时,所有缓存都会被清除并重建,而无需人工手动执行。

如果此问题与主题相关,则应禁用缓存机制(css / js聚合),并且在进行更改时不必清除缓存数据。

答案 6 :(得分:1)

我在http://www.drupalgardens.com/content/clear-all-caches-not-working

找到了以下内容
  

网站周围还有另一层缓存“清除所有内容   缓存“不影响,你是对的。这就是存储的层   匿名用户的内容。

     

如果您想绕过缓存进行测试,可以添加一个   垃圾查询字符串到站点路径的末尾。例如,如果你   想要绕过example.drupalgardens.com/foo上的缓存你可以   访问example.drupalgardens.com/foo?bar=baz或任何其他随机文本   设置如?xxxxx = xxxxx。

这对我有帮助,因为我遇到了在Configuration>下清除缓存的问题。表现似乎没有帮助。

答案 7 :(得分:1)

以上代码适用于Drupal 6.

对于Drupal 7,flush-cache模块如下:

<?php 
/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_permission()
 */
function flush_cache_permission() {
  return array(
    'administer my module' => array(
      'title' => t('flush cache module'),
      'description' => t('Content admin flush cache.'),
    ),
  );
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

注意:然后转到:

然后刷新它

sitename.com/flush-cache

确保您在权限页面上授予他们权限。如果在打开模块后没有出现权限,则以“正常”方式清除缓存。

当您不希望客户端访问管理员菜单但您仍希望他们能够刷新缓存时,这是首选。

答案 8 :(得分:0)

你在这里:

我不得不卸载“devel”模块(它与特殊菜单项不兼容,我需要更糟糕),所以我自己做了。

您看到的任何地方MODULENAME都会将其替换为模块名称。

第1步: 在“return $ items”行之前添加到HOOK_MENU中的任何模块(最好是您的一个自定义模块):

// short cut for flushing the caches:
$items['flush-cache'] = array(
  'type' => MENU_CALLBACK,
  'title' => t('Flush the cache'),
  'description' => 'MODULENAME Custom Cache Flush',
  'page callback' => 'MODULENAME_flush_cache',
  'access callback' => TRUE,
);

第2步: 现在,在同一模块文件中,它不在“内部”任何其他函数中,添加:

/**  Page callback  **/
function MODULENAME_flush_cache() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

现在,您可以转到站点上的URL“/ flush-cache”来刷新缓存。 (最后一次以旧方式刷新缓存后。)

第3步: 如果您想要它非常方便,请将以下内容添加到page.tpl.php文件中。你可以把它放在&lt; body&gt;之间的任何地方。和&lt; / body&gt;。注意:$ my_is_test是我使用的变量,在我的测试系统上为TRUE,在生产中为FALSE。如果您没有类似的东西,请将其替换为TRUE或FALSE以将其打开或关闭:

<?php if ($my_is_test): ?>
<a style="text-align:left; position:absolute; right:2px; top:20px;" href="<?=$base_path?>flush-cache" onclick="this.innerHTML = '<b><blink><big>Wait...</big></blink></b>';">flush</a>
<? endif; ?>

瞧!您可以单击每个页面的右上角有一个“刷新”链接。随意更改“正确”和“顶部”金额(或将“右”更改为“左”或“顶部”更改为“底部”以将其放在您喜欢的任何位置。此链接定位仅适用于现代浏览器,但它是只为了你,所以这应该不是问题,对吗?

答案 9 :(得分:0)

以下模块创建一个菜单项,只有具有“刷新缓存”权限的用户才能访问该菜单项,该模块在常规用户权限页面上可用。

/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_perm()
 */
function flush_cache_perm() {
  return array('flush cache');
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

答案 10 :(得分:0)

在Drupal 8中,管理菜单模块还没有准备好使用。它可能会被Drupal&#34; Toolbar&#34;取代。所以现在还没有简单的方法来清除缓存,而实际上没有:

admin/config/development/performance

唯一的选择是在现有工具栏中添加菜单项。这可以通过使用this module来完成,但正如您所看到的,它仍然需要一些工作。我得到了它的工作,但不得不做一些调整。

答案 11 :(得分:-1)

使用drush和这个命令:drush cc all

如果您正在使用Boost进行缓存,则需要更加具体:

drush @alias_name cc all