如何清空Drupal缓存:
实际上,您如何指示最终用户清除其缓存?
答案 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