diff --git includes/bootstrap.inc includes/bootstrap.inc index 1a53a89..9990dd0 100644 --- includes/bootstrap.inc +++ includes/bootstrap.inc @@ -49,16 +49,6 @@ define('CACHE_PERMANENT', 0); define('CACHE_TEMPORARY', -1); /** - * Indicates that page caching is disabled. - */ -define('CACHE_DISABLED', 0); - -/** - * Indicates that page caching is enabled, using "normal" mode. - */ -define('CACHE_NORMAL', 1); - -/** * Log message severity -- Emergency: system is unusable. * * @see watchdog() @@ -1096,7 +1086,7 @@ function drupal_serve_page_from_cache(stdClass $cache) { // do not bother caching the page in a public proxy, because the cached copy // will only be served to that particular user due to Vary: Cookie, unless // the Vary header has been replaced or unset in hook_boot() (see below). - $max_age = !variable_get('page_cache_invoke_hooks', TRUE) && (!isset($_COOKIE[session_name()]) || isset($hook_boot_headers['vary'])) ? variable_get('cache_lifetime', 0) : 0; + $max_age = !variable_get('page_cache_invoke_hooks', TRUE) && (!isset($_COOKIE[session_name()]) || isset($hook_boot_headers['vary'])) ? variable_get('page_cache_maximum_age', 0) : 0; $default_headers['Cache-Control'] = 'public, max-age=' . $max_age; // Entity tag should change if the output changes. @@ -1982,16 +1972,16 @@ function _drupal_bootstrap_page_cache() { } // Check for a cache mode force from settings.php. if (variable_get('page_cache_without_database')) { - $cache_mode = CACHE_NORMAL; + $cache_enabled = TRUE; } else { drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES, FALSE); - $cache_mode = variable_get('cache'); + $cache_enabled = variable_get('cache'); } drupal_block_denied(ip_address()); // If there is no session cookie and cache is enabled (or forced), try // to serve a cached page. - if (!isset($_COOKIE[session_name()]) && $cache_mode == CACHE_NORMAL) { + if (!isset($_COOKIE[session_name()]) && $cache_enabled) { // Make sure there is a user object because it's timestamp will be // checked, hook_boot might check for anonymous user etc. $user = drupal_anonymous_user(); diff --git includes/common.inc includes/common.inc index 9feae77..b4606ea 100644 --- includes/common.inc +++ includes/common.inc @@ -2431,7 +2431,7 @@ function drupal_page_footer() { // Commit the user session, if needed. drupal_session_commit(); - if (variable_get('cache', CACHE_DISABLED) != CACHE_DISABLED && ($cache = drupal_page_set_cache())) { + if (variable_get('cache', 0) && ($cache = drupal_page_set_cache())) { drupal_serve_page_from_cache($cache); } else { diff --git includes/form.inc includes/form.inc index fb13693..1773e40 100644 --- includes/form.inc +++ includes/form.inc @@ -651,7 +651,7 @@ function drupal_process_form($form_id, &$form, &$form_state) { // We'll clear out the cached copies of the form and its stored data // here, as we've finished with them. The in-memory copies are still // here, though. - if (variable_get('cache', CACHE_DISABLED) == CACHE_DISABLED && !empty($form_state['values']['form_build_id'])) { + if (!variable_get('cache', 0) && !empty($form_state['values']['form_build_id'])) { cache_clear_all('form_' . $form_state['values']['form_build_id'], 'cache_form'); cache_clear_all('storage_' . $form_state['values']['form_build_id'], 'cache_form'); } diff --git includes/language.inc includes/language.inc index 1b55a18..03e7870 100644 --- includes/language.inc +++ includes/language.inc @@ -283,7 +283,7 @@ function language_provider_invoke($provider_id, $provider = NULL) { // If the language provider has no cache preference or this is satisfied // we can execute the callback. - $cache = !isset($provider['cache']) || $user->uid || $provider['cache'] == variable_get('cache', CACHE_DISABLED); + $cache = !isset($provider['cache']) || $user->uid || $provider['cache'] == variable_get('cache', 0); $callback = isset($provider['callbacks']['language']) ? $provider['callbacks']['language'] : FALSE; $langcode = $cache && function_exists($callback) ? $callback($languages) : FALSE; $results[$provider_id] = isset($languages[$langcode]) ? $languages[$langcode] : FALSE; diff --git modules/locale/locale.api.php modules/locale/locale.api.php index d54b4b4..121cf20 100644 --- modules/locale/locale.api.php +++ modules/locale/locale.api.php @@ -151,7 +151,7 @@ function hook_language_negotiation_info() { 'types' => array('custom_language_type'), 'name' => t('Custom language provider'), 'description' => t('This is a custom language provider.'), - 'cache' => CACHE_DISABLED, + 'cache' => 0, ), ); } diff --git modules/locale/locale.module modules/locale/locale.module index fc484a5..0c6986b 100644 --- modules/locale/locale.module +++ modules/locale/locale.module @@ -589,7 +589,7 @@ function locale_language_negotiation_info() { 'callbacks' => array('language' => 'locale_language_from_browser'), 'file' => $file, 'weight' => -2, - 'cache' => CACHE_DISABLED, + 'cache' => 0, 'name' => t('Browser'), 'description' => t("Determine the language from the browser's language settings."), ); diff --git modules/poll/poll.test modules/poll/poll.test index 717a3d8..7e06bad 100644 --- modules/poll/poll.test +++ modules/poll/poll.test @@ -375,7 +375,7 @@ class PollVoteCheckHostname extends PollTestCase { // Enable page cache to verify that the result page is not saved in the // cache when anonymous voting is allowed. - variable_set('cache', CACHE_NORMAL); + variable_set('cache', 1); // Create poll. $title = $this->randomName(); diff --git modules/simpletest/tests/bootstrap.test modules/simpletest/tests/bootstrap.test index 10c434c..aadef0b 100644 --- modules/simpletest/tests/bootstrap.test +++ modules/simpletest/tests/bootstrap.test @@ -105,7 +105,7 @@ class BootstrapPageCacheTestCase extends DrupalWebTestCase { * Test support for requests containing If-Modified-Since and If-None-Match headers. */ function testConditionalRequests() { - variable_set('cache', CACHE_NORMAL); + variable_set('cache', 1); // Fill the cache. $this->drupalGet(''); @@ -143,7 +143,7 @@ class BootstrapPageCacheTestCase extends DrupalWebTestCase { * Test cache headers. */ function testPageCache() { - variable_set('cache', CACHE_NORMAL); + variable_set('cache', 1); // Fill the cache. $this->drupalGet('system-test/set-header', array('query' => array('name' => 'Foo', 'value' => 'bar'))); @@ -187,7 +187,7 @@ class BootstrapPageCacheTestCase extends DrupalWebTestCase { * mod_deflate Apache module. */ function testPageCompression() { - variable_set('cache', CACHE_NORMAL); + variable_set('cache', 1); // Fill the cache and verify that output is compressed. $this->drupalGet('', array(), array('Accept-Encoding: gzip,deflate')); @@ -280,14 +280,14 @@ class HookBootExitTestCase extends DrupalWebTestCase { */ function testHookBootExit() { // Test with cache disabled. Boot and exit should always fire. - variable_set('cache', CACHE_DISABLED); + variable_set('cache', 0); $this->drupalGet(''); $calls = 1; $this->assertEqual(db_query('SELECT COUNT(*) FROM {watchdog} WHERE type = :type AND message = :message', array(':type' => 'system_test', ':message' => 'hook_boot'))->fetchField(), $calls, t('hook_boot called with disabled cache.')); $this->assertEqual(db_query('SELECT COUNT(*) FROM {watchdog} WHERE type = :type AND message = :message', array(':type' => 'system_test', ':message' => 'hook_exit'))->fetchField(), $calls, t('hook_exit called with disabled cache.')); // Test with normal cache. Boot and exit should be called. - variable_set('cache', CACHE_NORMAL); + variable_set('cache', 1); $this->drupalGet(''); $calls++; $this->assertEqual(db_query('SELECT COUNT(*) FROM {watchdog} WHERE type = :type AND message = :message', array(':type' => 'system_test', ':message' => 'hook_boot'))->fetchField(), $calls, t('hook_boot called with normal cache.')); diff --git modules/simpletest/tests/session.test modules/simpletest/tests/session.test index 74ffab9..385cf37 100644 --- modules/simpletest/tests/session.test +++ modules/simpletest/tests/session.test @@ -140,7 +140,7 @@ class SessionTestCase extends DrupalWebTestCase { $this->assertSessionEmpty(TRUE); // The same behavior is expected when caching is enabled. - variable_set('cache', CACHE_NORMAL); + variable_set('cache', 1); $this->drupalGet(''); $this->assertSessionCookie(FALSE); $this->assertSessionEmpty(TRUE); diff --git modules/system/system.admin.inc modules/system/system.admin.inc index c462fb6..38221df 100644 --- modules/system/system.admin.inc +++ modules/system/system.admin.inc @@ -1622,12 +1622,12 @@ function system_performance_settings() { '#title' => t('Caching'), ); - $cache = variable_get('cache', CACHE_DISABLED); + $cache = variable_get('cache', 0); $form['caching']['cache'] = array( - '#type' => 'radios', - '#title' => t('Page cache for anonymous users'), + '#type' => 'checkbox', + '#title' => t('Cache pages for anonymous users'), '#default_value' => $cache, - '#options' => array(CACHE_DISABLED => t('Disabled'), CACHE_NORMAL => t('Normal (recommended)')), + '#weight' => -2, ); $period = drupal_map_assoc(array(0, 60, 180, 300, 600, 900, 1800, 2700, 3600, 10800, 21600, 32400, 43200, 86400), 'format_interval'); $period[0] = '<' . t('none') . '>'; @@ -1636,7 +1636,14 @@ function system_performance_settings() { '#title' => t('Minimum cache lifetime'), '#default_value' => variable_get('cache_lifetime', 0), '#options' => $period, - '#description' => t('The minimum amount of time that will elapse before the caches are recreated.') + '#description' => t('Cached pages will not be re-created until at least this much time has elapsed.') + ); + $form['caching']['page_cache_maximum_age'] = array( + '#type' => 'select', + '#title' => t('Expiration of cached pages'), + '#default_value' => variable_get('page_cache_maximum_age', 0), + '#options' => $period, + '#description' => t('The maximum time an external cache can use an old version of a page.') ); $directory = 'public://'; @@ -1653,7 +1660,7 @@ function system_performance_settings() { '#description' => t('External resources can be optimized automatically, which can reduce both the size and number of requests made to your website.') . $disabled_message, ); - $js_hide = $cache == CACHE_DISABLED ? ' class="js-hide"' : ''; + $js_hide = $cache ? '' : ' class="js-hide"'; $form['bandwidth_optimization']['page_compression'] = array( '#type' => 'checkbox', '#title' => t('Compress cached pages.'), diff --git modules/system/system.install modules/system/system.install index 1a9acce..7b05b56 100644 --- modules/system/system.install +++ modules/system/system.install @@ -1995,7 +1995,7 @@ function system_update_7032() { */ function system_update_7033() { if (variable_get('cache') == 2) { - variable_set('cache', CACHE_NORMAL); + variable_set('cache', 1); return t('Aggressive caching was disabled and replaced with normal caching. Read the page caching section in default.settings.php for more information on how to enable similar functionality.'); } }