diff --git a/plugins/cache/simple.inc b/plugins/cache/simple.inc
index 645c36a..f396c9c 100644
--- a/plugins/cache/simple.inc
+++ b/plugins/cache/simple.inc
@@ -53,11 +53,23 @@ function panels_simple_cache_set_cache($conf, $content, $display, $args, $contex
 function panels_simple_cache_clear_cache($display) {
   $cid = 'panels_simple_cache';
 
-  // 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)) {
-    $cid .= ':' . $display->owner->id;
+  // If the panel is stored in the database it'll have a numeric did value.
+  if (is_numeric($display->did)) {
+    $cid .= ':' . $display->did;
+  }
+  // Exported panels won't have a numeric did but may have a usable cache_key.
+  elseif (!empty($display->cache_key)) {
+    $cid .= ':' . str_replace('panel_context:', '', $display->cache_key);
+  }
+  // Alternatively use the css_id.
+  elseif (!empty($display->css_id)) {
+    $cid .= ':' . $display->css_id;
+  }
+  // Failover to just appending the did, which may be the completely unusable
+  // string 'new'.
+  else {
+    $cid .= ':' . $display->did;
   }
-  $cid .= ':' . $display->did;
 
   cache_clear_all($cid, 'cache', TRUE);
 }
