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/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..749f74b 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')); @@ -287,7 +287,7 @@ class HookBootExitTestCase extends DrupalWebTestCase { $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..a93f2b6 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 age value that is sent in page headers to external caches.') ); $directory = 'public://'; 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.'); } }