diff --git a/plugins/cache/simple.inc b/plugins/cache/simple.inc
index 097a5fe..cceff3b 100644
--- a/plugins/cache/simple.inc
+++ b/plugins/cache/simple.inc
@@ -1,4 +1,5 @@
 <?php
+// $Id: simple.inc,v 1.1.2.5 2011/01/07 20:59:09 merlinofchaos Exp $
 
 /**
  * @file
@@ -66,26 +67,33 @@ function panels_simple_cache_clear_cache($display) {
  * Figure out an id for our cache based upon input and settings.
  */
 function panels_simple_cache_get_id($conf, $display, $args, $contexts, $pane) {
+  $key_data = array();
   $id = 'panels_simple_cache';
 
+  if (isset($display->cache_key)) {
+    $key_data[] = $display->cache_key;
+    $id .= ':' . $display->cache_key;
+  }
+
   // This is used in case this is an in-code display, which means did will be something like 'new-1'.
   if (isset($display->owner) && isset($display->owner->id)) {
+    $key_data[] = $display->owner->id;
     $id .= ':' . $display->owner->id;
   }
-  $id .= ':' . $display->did;
+  $key_data[] = $display->did;
 
   if ($pane) {
-    $id .= ':' . $pane->pid;
+    $key_data[] = $pane->pid;
   }
 
   if (user_access('view pane admin links')) {
-    $id .= ':admin';
+    $key_data[] = 'admin';
   }
 
   switch ($conf['granularity']) {
     case 'args':
       foreach ($args as $arg) {
-        $id .= ':' . $arg;
+        $key_data[] = $arg;
       }
       break;
 
@@ -95,20 +103,20 @@ function panels_simple_cache_get_id($conf, $display, $args, $contexts, $pane) {
       }
       foreach ($contexts as $context) {
         if (isset($context->argument)) {
-          $id .= ':' . $context->argument;
+          $key_data[] = $context->argument;
         }
       }
   }
   if (module_exists('locale')) {
     global $language;
-    $id .= ':' . $language->language;
+    $key_data[] = $language->language;
   }
 
-  if(!empty($pane->configuration['use_pager'])) {
-    $id .= ':p' . check_plain($_GET['page']);
+  if ($pane->configuration['use_pager'] == 1) {
+    $key_data[] = 'p' . check_plain($_GET['page']);
   }
 
-  return $id;
+  return $id . ':' . md5(serialize($key_data));
 }
 
 function panels_simple_cache_settings_form($conf, $display, $pid) {
