diff --git a/plugins/cache/rules.inc b/plugins/cache/rules.inc
index bb29bf6..b2d3e07 100644
--- a/plugins/cache/rules.inc
+++ b/plugins/cache/rules.inc
@@ -35,6 +35,9 @@ function cache_actions_rules_cache_get_cache($conf, $display, $args, $contexts,
     if (!$cache) {
       return FALSE;
     }
+    if (!empty($conf['lifetime']) && (time() - $cache->created) > $conf['lifetime']) {
+      return FALSE;
+    }
     return $cache->data;
   }
   $message = 'The panel pane %pane is using the old cache actions caching mechanism,
@@ -159,6 +162,14 @@ function cache_actions_rules_cache_get_id($conf, $display, $args, $contexts, $pa
 function cache_actions_rules_cache_settings_form(&$conf, $display, $pid) {
   $form = array();
 
+  $options = drupal_map_assoc(array(15, 30, 60, 120, 180, 240, 300, 600, 900, 1200, 1800, 3600, 7200, 14400, 28800, 43200, 86400, 172800, 259200, 345600, 604800), 'format_interval');
+  $form['lifetime'] = array(
+    '#title' => t('Lifetime'),
+    '#type' => 'select',
+    '#options' => array(0 => t('Permanent')) + $options,
+    '#default_value' => isset($conf['lifetime']) ? $conf['lifetime'] : 0,
+  );
+
   $form['granularity'] = array(
     '#title' => t('Granularity'),
     '#type' => 'select',
