Search code examples
performancedrupaldrupal-cache

How long do Drupal caches last?


Using the devel module I can see a lot of calls to cache_get() and cache_set(). After how long does a cached value need to be refreshed? Does the cache get invalidated every few minutes?


Solution

  • The module that is using cache_set sets the expiration in the call. Some things have explicit durations, others have permanent or semi-permanent lifetimes, based on the situation.

    Caches get explicitly cleared when you invoke the method through the admin interface (or drush), or otherwise through the use of drupal_flush_all_caches or cache_clear_all.

    Lately, I have been using a hook_cron to clear certain cache tables each night.

    EDIT to answer comment:

    To see which cache, I usually put this in a separate script somewhere:

    require_once './includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    header("Content-Type: text/plain; encoding=utf-8");
    $user = user_load(1);
    print "Modules implementing hook_cron:\n" . implode("\n", module_implements('cron'));
    
    

    To see expirations, examine the various cache tables in the database and look at the expire column. Modules can set expirations on each individual call to cache_set, so it can vary entry by entry.