Index: actions.module
===================================================================
--- actions.module	(revision 6339)
+++ actions.module	(working copy)
@@ -423,6 +423,11 @@
     return $actions;
   }
 
+  $cache = cache_get('actions', 'cache_menu');
+  if ($cache->data) {
+    return unserialize($cache->data);
+  }
+
   $actions = array();
 
   $all_func = get_defined_functions();
@@ -431,6 +436,9 @@
   foreach ($functions as $function) {
     $actions[$function] = $function('metadata', $dummy, $dummy);
   }
+
+  cache_set('actions', 'cache_menu', serialize($actions));
+
   return $actions;
 }
 
Index: actions.inc
===================================================================
--- actions.inc	(revision 6339)
+++ actions.inc	(working copy)
@@ -17,7 +17,9 @@
       $node->status = '1';
       $node->revision = '0';
       if (!$edit['defer']) {
-        node_save($node);
+        if ($node->nid) {
+          db_query('UPDATE {node} SET status = 1 WHERE nid = %d', $node->nid);
+        }
       }
       watchdog('action', t('Set node id %id to Published', array('%id' => intval($node->nid))));
       break;
@@ -63,7 +65,9 @@
     $node->status = '0';
     $node->revision = '0';
     if (!array_key_exists('defer', $edit)) {
-      node_save($node);
+      if ($node->nid) {
+        db_query('UPDATE {node} SET status = 0 WHERE nid = %d', $node->nid);
+      }
     }
     watchdog('action', t('Set node id %id to Unpublished', array('%id' => intval($node->nid))));
     break;
