--- includes/bootstrap.inc +++ includes/bootstrap.inc @@ -499,6 +499,8 @@ * @see page_set_cache */ function drupal_page_header() { + global $user; + if (variable_get('cache', 0)) { if ($cache = page_get_cache()) { bootstrap_invoke_all('init'); @@ -517,7 +519,7 @@ $none_match = !empty($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] == $etag : NULL; // The type checking here is very important, be careful when changing entries. - if (($modified_since !== NULL || $none_match !== NULL) && $modified_since !== false && $none_match !== false) { + if (!$user->uid && ($modified_since !== NULL || $none_match !== NULL) && $modified_since !== false && $none_match !== false) { header('HTTP/1.0 304 Not Modified'); exit(); } @@ -525,6 +527,7 @@ // Send appropriate response: header("Last-Modified: $date"); header("ETag: $etag"); + header("Cache-Control: must-revalidate"); // Determine if the browser accepts gzipped data. if (@strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') === false && function_exists('gzencode')) {