diff --git rules/includes/rules.plugins.inc rules/includes/rules.plugins.inc
index b4bfc57..5b2d66a 100644
--- rules/includes/rules.plugins.inc
+++ rules/includes/rules.plugins.inc
@@ -523,6 +523,25 @@ class RulesRuleSet extends RulesActionContainer {
   protected function exportChildren($key = 'RULES') {
     return parent::exportChildren($key);
   }
+
+  public function rebuildCache(&$itemInfo, &$cache) {
+    parent::rebuildCache($itemInfo, $cache);
+      // Move sets into the cache.
+    if ($sets = rules_config_load_multiple(FALSE, array('plugin' => $this->itemName))) {
+
+      foreach ($sets as $id => $set) {
+        // Clone the component to avoid modules getting the to be cached
+        // version from the static loading cache.
+        $set = clone $set;
+        $set->__call('optimize');
+        $set->setSkipSetup(TRUE);
+        // Allow modules to alter the cached component.
+        drupal_alter('rules_component', $this->itemName, $set);
+        cache_set('comp_' . $set->name, $set, 'cache_rules');
+        $set->destroy();
+      }
+    }
+  }
 }
 
 /**
diff --git rules/rules.module rules/rules.module
index ec20790..0cc7cb8 100644
--- rules/rules.module
+++ rules/rules.module
@@ -412,6 +412,9 @@ function rules_rules_plugin_info() {
         'RulesPluginUIInterface' => array(
           'class' => 'RulesRuleSetUI',
         ),
+        'RulesOptimizationInterface' => array(
+          'class' => 'RulesDefaultOptimizer',
+        ),
       ),
     ),
   );
