diff --git a/includes/plugins.inc b/includes/plugins.inc
index 9077d38..f13c945 100644
--- a/includes/plugins.inc
+++ b/includes/plugins.inc
@@ -41,8 +41,15 @@ function panels_get_regions($layout, $display) {
  *   The cached content, or FALSE to indicate no cached content exists.
  */
 function panels_get_cached_content($display, $args, $context, $pane = NULL) {
-  // Never use cache on a POST
+  $cache = TRUE;
   if (!empty($_POST)) {
+    // Here we check if a caching plugin has implemented the ability to cache on
+    // $_POST requests. By default this is disabled.
+    $settings = $pane ? $pane : $display;
+    $cache = !empty($settings->cache['settings']['cache_post']);
+  }
+
+  if (!$cache) {
     return FALSE;
   }
 
@@ -70,7 +77,12 @@ function panels_get_cached_content($display, $args, $context, $pane = NULL) {
 function panels_set_cached_content($cache, $display, $args, $context, $pane = NULL) {
   // Never use cache on a POST
   if (!empty($_POST)) {
-    return FALSE;
+    // Here we check if a caching plugin has implemented the ability to cache on
+    // $_POST requests. By default this is disabled.
+    $settings = $pane ? $pane : $display;
+    if (empty($settings->cache['settings']['cache_post'])) {
+      return FALSE;
+    }
   }
 
   $method = $pane ? $pane->cache['method'] : $display->cache['method'];
diff --git a/plugins/cache/simple.inc b/plugins/cache/simple.inc
index 645c36a..81ffdab 100644
--- a/plugins/cache/simple.inc
+++ b/plugins/cache/simple.inc
@@ -17,6 +17,7 @@ $plugin = array(
   'defaults' => array(
     'lifetime' => 15,
     'granularity' => 'none',
+    'cache_post' => FALSE,
   ),
 );
 
@@ -132,6 +133,13 @@ function panels_simple_cache_settings_form($conf, $display, $pid) {
     '#default_value' => $conf['lifetime'],
   );
 
+  $form['cache_post'] = array(
+    '#title' => t('Cache on POST requests'),
+    '#description' => t('By default displays / panes are only cacheable on GET requests. Enabling this means the panel content will also be cached on a POST request. Be careful with this setting if you have content that is expected to change on a POST.'),
+    '#type' => 'checkbox',
+    '#default_value' => $conf['cache_post'],
+  );
+
   $form['granularity'] = array(
     '#title' => t('Granularity'),
     '#type' => 'select',
