diff --git a/draggableviews.module b/draggableviews.module
index c56ab73..cb97432 100644
--- a/draggableviews.module
+++ b/draggableviews.module
@@ -11,6 +11,30 @@ function draggableviews_views_api() {
 }
 
 /**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function draggableviews_form_views_ui_edit_form_alter($form, &$form_state, $view, $display_id = NULL) {
+  // We don't want to make any changes to $form_state['view'].
+  $clone_view = clone $form_state['view'];
+
+  // Check if draggableviews and views cache render is enabled simultaneously.
+  // We should prevent it, because these functionality isn't compatible with one another.
+  foreach ($clone_view->display_handler->get_handlers('field') as $id => $handler) {
+    if ($id == 'draggableviews') {
+      $cache = $clone_view->display_handler->get_plugin('cache');
+      if ($cache->options['type'] == 'time' && $cache->options['output_lifespan'] != -1) {
+        // Show message only once.
+        $message = t('Please, pay attention, that Draggable Views functionality doesn\'t work with views cache render.');
+        if (empty($_SESSION['messages']) || empty($_SESSION['messages']) || !in_array($message, $_SESSION['messages']['warning'])) {
+          drupal_set_message($message, 'warning');
+        }
+        break;
+      }
+    }
+  }
+}
+
+/**
  * Implements hook_form_alter().
  *
  * Alter views form to change button label.
@@ -86,6 +110,10 @@ function draggableviews_views_submit($form, &$form_state) {
   if (module_exists('rules')) {
     rules_invoke_event('draggableviews_rules_event_sorted', $view->name, $view->current_display);
   }
+
+  // Clear all views cache.
+  $cache = $view->display_handler->get_plugin('cache');
+  $cache->cache_flush();
 }
 
 /**
