diff -upr mediawiki-1.16.1/includes/OutputPage.php mediawiki/includes/OutputPage.php
--- mediawiki-1.16.1/includes/OutputPage.php	2011-01-04 07:15:54.000000000 +0100
+++ mediawiki/includes/OutputPage.php	2011-01-27 04:06:17.000000000 +0100
@@ -1431,8 +1431,14 @@ class OutputPage {
 				# We do want clients to cache if they can, but they *must* check for updates
 				# on revisiting the page.
 				wfDebug( __METHOD__ . ": private caching; {$this->mLastModified} **\n", false );
-				$response->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' );
-				$response->header( "Cache-Control: private, must-revalidate, max-age=0" );
+				global $wgUser, $wgCacheLoggedInUsers;
+				if ($wgUser && $wgUser->isLoggedIn() && !$wgCacheLoggedInUsers) {
+				  $response->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' );
+				  $response->header( "Cache-Control: private, must-revalidate, max-age=0" );
+				} else {
+				  # enable downstream caching, like mod_disk_cache
+				  $response->header( 'Cache-Control: s-maxage=3, must-revalidate, max-age=0' );
+				}
 			}
 			if($this->mLastModified) {
 				$response->header( "Last-Modified: {$this->mLastModified}" );
