diff --git a/plugins/cache/simple.inc b/plugins/cache/simple.inc
index 645c36a..e759274 100644
--- a/plugins/cache/simple.inc
+++ b/plugins/cache/simple.inc
@@ -95,28 +95,21 @@ function panels_simple_cache_get_id($conf, $display, $args, $contexts, $pane) {
   }
 
   switch ($conf['granularity']) {
+    case 'path_args':
+      $id .= ':' . md5(serialize(arg()));
+      break;
     case 'args':
-      foreach ($args as $arg) {
-        $id .= ':' . $arg;
-      }
+      $id .= ':' . md5(serialize($arg));
       break;
-
     case 'context':
-      if (!is_array($contexts)) {
-        $contexts = array($contexts);
-      }
-      foreach ($contexts as $context) {
-        if (isset($context->argument)) {
-          $id .= ':' . $context->argument;
-        }
-      }
+      $id .= ':' . md5(serialize($context->argument));
   }
   if (module_exists('locale')) {
     global $language;
     $id .= ':' . $language->language;
   }
 
-  if(!empty($pane->configuration['use_pager']) && !empty($_GET['page'])) {
+  if (!empty($pane->configuration['use_pager']) && !empty($_GET['page'])) {
     $id .= ':p' . check_plain($_GET['page']);
   }
 
@@ -136,11 +129,12 @@ function panels_simple_cache_settings_form($conf, $display, $pid) {
     '#title' => t('Granularity'),
     '#type' => 'select',
     '#options' => array(
+      'path_args' => t('URL'),
       'args' => t('Arguments'),
       'context' => t('Context'),
       'none' => t('None'),
     ),
-    '#description' => t('If "arguments" are selected, this content will be cached per individual argument to the entire display; if "contexts" are selected, this content will be cached per unique context in the pane or display; if "neither" there will be only one cache for this pane.'),
+    '#description' => t('If URL the content will be cached by individual URL that is currently used; if "arguments" are selected, this content will be cached per individual argument to the entire display; if "contexts" are selected, this content will be cached per unique context in the pane or display; if "neither" there will be only one cache for this pane.'),
     '#default_value' => $conf['granularity'],
   );
 
