diff -u wp-cache/wp-cache-config-sample.php patched/wp-cache-config-sample.php
--- wp-cache/wp-cache-config-sample.php	2007-09-21 16:10:28.000000000 +0200
+++ patched/wp-cache-config-sample.php	2008-06-06 14:35:43.190469980 +0300
@@ -17,6 +17,9 @@
 $cache_rejected_uri = array('wp-');
 $cache_rejected_user_agent = array ( 0 => 'bot', 1 => 'ia_archive', 2 => 'slurp', 3 => 'crawl', 4 => 'spider');
 
+$cache_compression_level = '1';
+$cache_use_smart_gzip = true;
+
 // Just modify it if you have conflicts with semaphores
 $sem_id = 5419;
 
diff -u wp-cache/wp-cache-phase1.php patched/wp-cache-phase1.php
--- wp-cache/wp-cache-phase1.php	2007-09-21 16:10:28.000000000 +0200
+++ patched/wp-cache-phase1.php	2008-06-06 14:35:43.226469290 +0300
@@ -42,6 +42,15 @@
 		if ($meta->dynamic) {
 			include($cache_file);
 		} else {
+			if($cache_use_smart_gzip && strstr($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip')) {
+				if(@filesize($cache_file . '.gz') >0) {
+					ini_set ( "zlib.output_compression", 0);
+					header('Content-Encoding: gzip');
+					if(@readfile ($cache_file . '.gz'))
+						die;
+				}
+				/* If failed to read compressed file, try and ordinary way */	
+			}
 			/* No used to avoid problems with some PHP installations
 			$content_size += strlen($log);
 			header("Content-Length: $content_size");
diff -u wp-cache/wp-cache-phase2.php patched/wp-cache-phase2.php
--- wp-cache/wp-cache-phase2.php	2007-09-21 16:10:28.000000000 +0200
+++ patched/wp-cache-phase2.php	2008-06-06 14:35:43.262468600 +0300
@@ -119,6 +119,7 @@
 function wp_cache_ob_callback($buffer) {
 	global $cache_path, $cache_filename, $meta_file, $wp_start_time;
 	global $new_cache, $wp_cache_meta_object, $file_expired, $blog_id;
+	global $cache_compression_level,$cache_use_smart_gzip;
 
 
 	/* Mode paranoic, check for closing tags 
@@ -156,6 +157,12 @@
 			fputs($fr, $store);
 		} else {
 			fputs($fr, $buffer);
+			if($cache_use_smart_gzip){
+				$fgz= gzopen($cache_path . $cache_filename . '.gz' , 'w' . $cache_compression_level );
+				gzwrite($fgz, $buffer);
+				gzwrite($fgz, "\n<!-- Cached page compressed and served by WP-Cache -->\n");
+				gzclose($fgz);
+			}
 		}
 		$new_cache = true;
 		fclose($fr);
