How do I empty the Drupal caches:
In Drupal 8, the admin menu module isn't quite ready for use yet. And it will probably get replaced with Drupal "Toolbar". So right now there's no easy way to clear cache, without actually going to:
admin/config/development/performance
The only alternative is to add a menu item in the existing toolbar. This can be done by using this module, but as you can see, it still needs a bit of work. I got it working, but had to make a few tweaks.
use drush and this command: drush cc all
If you're using Boost to cache you need to be more specific:
drush @alias_name cc all
If you want to clear the cache from a module, you can use the following code.
drupal_flush_all_caches();
The following module creates a menu item that is accessible only to users with the permission "flush cache", which this module makes available on the regular user permissions page.
/**
* 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.';
}
HERE YOU GO:
I had to de-install the "devel" module (it was incompatible with Special Menu Items, which I needed worse), so I made my own.
Anywhere you see MODULENAME replace it with the name of your module.
STEP 1: Add to any module (preferably one of your custom modules) in the HOOK_MENU, before the "return $items" line:
// 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,
);
STEP 2: Now, in the same module file, where it's not "inside" any other function, add:
/** Page callback **/
function MODULENAME_flush_cache() {
drupal_flush_all_caches();
return 'Caches were flushed.';
}
Now, you can just go to the URL "/flush-cache" on your site to flush the cache. (After you flush the cache one last time the old way.)
STEP 3: If you want it REALLY convenient, add the following to your page.tpl.php file. You can put it pretty much anywhere between <body> and </body>. NOTE: $my_is_test is a variable I use that's TRUE on my test system, and FALSE in production. If you don't have something like that, replace it with TRUE or FALSE to turn it on or off:
<?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; ?>
And voila! You have a "flush" link at the top-right corner of every page you can click on. Feel free to change the "right" and "top" amounts (or change "right" to "left" or "top" to "bottom" to put it wherever you like it. This link positioning only works on modern browsers, but it's only for you, so it shouldn't be a problem, right?
I found the following at: http://www.drupalgardens.com/content/clear-all-caches-not-working
There's another layer of caching around the site which "clear all caches" does not affect, you're right. That's the layer that stores the content for anonymous users.
If you want to bypass the cache for testing purposes, you can add a junk query string to the end of your site path. For example, if you wanted to bypass the cache on example.drupalgardens.com/foo you could visit example.drupalgardens.com/foo?bar=baz or any other random text set up like ?xxxxx=xxxxx.
This helped me, because I have had issues where clearing the cache under Configuration > Performance didn't seem to help.