5

When you enable the Boost module, it disables the standard Drupal caching (as at http://drupalperformanceblog.com/drupal-performance-tips), but it only reports boost as being incompatible with "aggressive" caching, and allows you to turn it back to "normal."
Does boost turn this off because it's unnecessary, or because it's actively harmful? Or does it not matter anyway?

(See also Is it redundant to use the "boost" module if varnish is used? with reference to using multiple caching systems.)

6

It's the System module that disables the aggressive caching when there is a module that implement hook_boot() or hook_exit().

The explanation is reported in the description text that appears in the form field to choose the type of caching.

The normal cache mode is suitable for most sites and does not cause any side effects. The aggressive cache mode causes Drupal to skip the loading (boot) and unloading (exit) of enabled modules when serving a cached page. This results in an additional performance boost but can cause unwanted side effects.

The code that executes that verify is the following one (system_performance_settings()):

  $problem_modules = array_unique(array_merge(module_implements('boot'), module_implements('exit')));
  sort($problem_modules);

  if (count($problem_modules) > 0) {
    $description .= '<p>' . t('<strong class="error">The following enabled modules are incompatible with aggressive mode caching and will not function properly: %modules</strong>', array('%modules' => implode(', ', $problem_modules))) . '.</p>';
  }

Boost only changes the content of a Drupal variable with variable_set('cache', CACHE_DISABLED); as it does it in its implementation of hook_enable(), it will disable the normal caching all times it is enabled. The reason for disabling it is reported in a comment before the code that changes that variable: "Forcibly disable Drupal's built-in SQL caching to prevent any conflicts of interest."
That means the module disables it just to avoid that both Drupal and Boost use their own cache, with the result of obtaining data from a cache that is then replaced with the content of another cache.

It could have been a better idea to hide the cache selector when Boost is enabled. In that way, users could not enable the cache that Boost disables when it is enabled.

As side note, hook_boot() has been removed from Drupal 8, and hook_exit() is probably going to be removed from Drupal 8 too. What I reported here for Drupal 6/7 will not be anymore true for Drupal 8.

  • 4
    Sounds about right. It's not hidden because some people like to use boost for certain parts of their site, and the core page cache for others. – mikeytown2 May 28 '11 at 5:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.