? node.patch
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.776
diff -u -p -r1.776 node.module
--- modules/node/node.module	14 Jan 2007 02:12:29 -0000	1.776
+++ modules/node/node.module	20 Jan 2007 13:42:49 -0000
@@ -493,8 +493,13 @@ function node_load($param = array(), $re
   $cachable = ($revision == NULL);
   $arguments = array();
   if (is_numeric($param)) {
-    if ($cachable && isset($nodes[$param])) {
-      return is_object($nodes[$param]) ? drupal_clone($nodes[$param]) : $nodes[$param];
+    if ($cachable) {
+      if (!isset($nodes[$param]) && ($data = cache_get($param, 'cache_node'))) {
+        $nodes[$param] = unserialize($data->data);
+      }
+      if (isset($nodes[$param])) {
+        return is_object($nodes[$param]) ? drupal_clone($nodes[$param]) : $nodes[$param];
+      }
     }
     $cond = 'n.nid = %d';
     $arguments[] = $param;
@@ -534,6 +539,7 @@ function node_load($param = array(), $re
     }
     if ($cachable) {
       $nodes[$node->nid] = is_object($node) ? drupal_clone($node) : $node;
+      cache_set($node->nid, 'cache_node', serialize($node));
     }
   }
 
@@ -649,6 +655,7 @@ function node_save(&$node) {
 
   // Clear the cache so an anonymous poster can see the node being added or updated.
   cache_clear_all();
+  cache_clear_all($node->nid, 'cache_node');
 }
 
 /**
