Cache Heuristic

Component ID

1104752

Component name

Cache Heuristic

Component type

module

Maintenance status

Development status

Component security advisory coverage

covered

Downloads

5932

Component created

Component changed

Component body

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['cache_backends'][] = 'sites/all/modules/contrib/cache_heuristic/memcache.deferred.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.