--- Database.pm	2005-12-01 09:46:01.000000000 -0500
+++ /usr/local/share/perl/5.8.4/CGI/Wiki/Store/Database.pm	2006-02-23 11:11:42.851175592 -0500
@@ -10,6 +10,8 @@
 use Time::Seconds;
 use Carp qw( carp croak );
 use Digest::MD5 qw( md5_hex );
+use Cache::Memcached;
+use Storable qw(thaw freeze);
 
 $VERSION = '0.27';
 
@@ -166,8 +168,25 @@
     my %args = scalar @_ == 1 ? ( name => $_[0] ) : @_;
     # Note _retrieve_node_data is sensitive to calling context.
     return $self->_retrieve_node_data( %args ) unless wantarray;
-    my %data = $self->_retrieve_node_data( %args );
-    $data{checksum} = $self->_checksum(%data);
+    my $memd = new Cache::Memcached {
+    	'servers' => [ "127.0.0.1:11211" ],
+        'compress_threshold' => 10_000,
+    };
+    my $key = $self->{_dbname} . ":";
+    if ($args{version}) {
+    	$key .= $args{version} . ":";
+    }
+    $key .= md5_hex($args{name});
+    my $node = $memd->get($key);
+    my %data;
+    if ($node) {
+    	%data = %{ thaw $node };
+    } else {
+    	%data = $self->_retrieve_node_data( %args );
+    	$data{checksum} = $self->_checksum(%data);
+    	my $serialized = freeze \%data;
+	$memd->set($key, $serialized);
+    }
     return %data;
 }
 
@@ -527,6 +546,12 @@
 	}
     }
 
+    my $memd = new Cache::Memcached {
+    	'servers' => [ "127.0.0.1:11211" ],
+        'compress_threshold' => 10_000,
+    };
+    my $key = $self->{_dbname} . ":" . md5_hex($node);
+    $memd->delete($key);
     return 1;
 }
 
