INTRODUCTION

The Cache Heuristic module gathers information on which cache entries are used
on a page, and bulk-loads these cache entries on following requests.

REQUIREMENTS

  • Drupal 7

SUPPORTED MODULES

INSTALLATION

  • Enable the module as usual.

CONFIGURATION

To enable heuristic caching change the cache backend in settings.php:

<?php
 
// Load the cache heuristic backend.
 
$conf['cache_backends'] = array(
   
'sites/all/modules/contrib/cache_heuristic/cache_heuristic.inc'
 
);

 

// Use cache heuristic as default cache backend
 
$conf['cache_default_class'] = 'HeuristicCache';

 

// Use the deferred database cache backend for HeuristicCache
  // (optional, the DrupalDatabaseCacheDeferred is used by default if not specified)
 
$conf['heuristic_cache_default_class'] = 'DrupalDatabaseCacheDeferred';

 

// Use another database connection for the field cache.
 
$conf['cache_target_cache_field'] = 'my_form_connection';

 

// Use tombstone flushing for all bins.
 
$conf['cache_default_tombstone_flush'] = TRUE;

 

// Use database cache directly for cache form (i.e. don't use cache heuristic for cache form).
 
$conf['cache_class_form'] = 'DrupalDatabaseCache';

 

// Use mem cache as default backend for cache heuristic (requires the memcache module)
 
$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';
 
$conf['heuristic_cache_default_class'] = 'MemCacheDrupalDeferred';
?>

STATIC CACHING

Static caching is provided through the 'static' option, either globally or per bin.

<?php
 
// Enable static caching for all bins.
 
$conf['heuristic_cache_default_static'] = TRUE;

 

// Disable static caching for a single bin.
 
$conf['heuristic_cache_static_cache_bootstrap'] = FALSE;
?>

BUFFER SIZE

The number of cache entries collected by Cache Heuristic can be controlled through
the option 'buffer_size', either globally or per bin.
Static caching is provided through the 'static' option, either globally or per bin.

<?php
 
// Infinite buffer size for all cache bins. (default)
 
$conf['heuristic_cache_default_buffer_size'] = -1;

 

// Only collect 10 cache entries for cache_field.
 
$conf['heuristic_cache_buffer_size_cache_field'] = 10;
?>

THRESHOLD

To avoid writing collected cache entries to the database all the time, a threshold
can be set.

<?php
 
// If any bin has changed more than 5 entries in its buffer, then store the
  // collection. (default)
 
$conf['heuristic_cache_default_threshold'] = 5;

 

// If there's any difference, whatsoever, in the cache_bootstrap collection,
  // the store the collection.
 
$conf['heuristic_cache_threshold_cache_bootstrap'] = 0;
?>
<?php
 
// If there are more than 20 changes across all bins, store the collection.
  // (Disabled by default)
 
$conf['heuristic_cache_totalthreshold'] = 20;
?>

OTHER

Cache Heuristic also provides a standard database cache backend similar to the
one from Drupal core, but with the following extra features:

  • Configurable database target
  • Tombstone flush mechanism
<?php
 
// Load the cache heuristic backend.
 
$conf['cache_backends'] = array(
   
'sites/all/modules/contrib/cache_heuristic/cache_heuristic.inc'
 
);

 

// Use cache heuristic as default cache backend
 
$conf['cache_default_class'] = 'DrupalDatabaseCacheTarget';

 

// Use another database connection for the form cache.
 
$conf['cache_target_cache_form'] = 'my_form_connection';

 

// Use tombstone flushing for all bins.
 
$conf['cache_default_tombstone_flush'] = TRUE;
?>

FAQ

Does it work as excepted?

I hope so.

Project Information

Downloads