=== modified file 'includes/common.inc'
--- includes/common.inc	2009-11-21 00:43:42 +0000
+++ includes/common.inc	2009-11-21 09:44:47 +0000
@@ -4544,6 +4544,9 @@ function drupal_page_set_cache() {
     $header_names = _drupal_set_preferred_header_name();
     foreach (drupal_get_http_header() as $name_lower => $value) {
       $cache->headers[$header_names[$name_lower]] = $value;
+      if ($name_lower == 'expires') {
+        $cache->expire = strtotime($value);
+      }
     }
 
     if ($cache->data) {

=== modified file 'modules/system/system.module'
--- modules/system/system.module	2009-11-19 01:24:44 +0000
+++ modules/system/system.module	2009-11-21 09:42:58 +0000
@@ -3076,8 +3076,11 @@ function system_page_build(&$page) {
  * @see system_run_cron_image_access()
  */
 function system_run_cron_image() {
-  drupal_page_is_cacheable(FALSE);
-
+  $cron_last = variable_get('cron_last', NULL);
+  $cron_threshold = variable_get('cron_safe_threshold', DRUPAL_CRON_DEFAULT_THRESHOLD);
+  // Let's set Expires to the next run.
+  drupal_add_http_header('Expires', gmdate(DATE_RFC1123, $cron_last + $cron_threshold));
+ 
   // Output a transparent 1x1 image to the browser; required for clients not
   // supporting JavaScript.
   drupal_add_http_header('Content-Type', 'image/gif');
@@ -3098,8 +3101,6 @@ function system_run_cron_image() {
   }
   else {
     // Run cron automatically if it has never run or threshold was crossed.
-    $cron_last = variable_get('cron_last', NULL);
-    $cron_threshold = variable_get('cron_safe_threshold', DRUPAL_CRON_DEFAULT_THRESHOLD);
     if (!isset($cron_last) || (REQUEST_TIME - $cron_last > $cron_threshold)) {
       // Lock cron threshold semaphore.
       variable_set('cron_threshold_semaphore', REQUEST_TIME);

