diff --git a/display_cache.admin.inc b/display_cache.admin.inc
index d364cf6..8e5598e 100644
--- a/display_cache.admin.inc
+++ b/display_cache.admin.inc
@@ -38,10 +38,23 @@ function display_cache_field_ui_form(&$form, &$form_state) {

   $settings = display_cache_get_settings($entity_type, $bundle, $view_mode);

+  // Add additional settings vertical tab.
+  if (!isset($form['additional_settings'])) {
+    $form['additional_settings'] = array(
+      '#type' => 'vertical_tabs',
+      '#theme_wrappers' => array('vertical_tabs'),
+      '#prefix' => '<div>',
+      '#suffix' => '</div>',
+    );
+    $form['#attached']['js'][] = 'misc/form.js';
+    $form['#attached']['js'][] = 'misc/collapse.js';
+  }
+
   // Add fieldset.
   $form['display_cache'] = array(
     '#title' => t('Display Cache Display Settings'),
     '#type' => 'fieldset',
+    '#group' => 'additional_settings',
     '#collapsible' => TRUE,
     '#collapsed' => TRUE,
     '#access' => user_access('administer display cache'),
@@ -115,6 +128,24 @@ function display_cache_field_ui_form(&$form, &$form_state) {
     ),
   );

+  if ($entity_type === 'node') {
+    $clear_on_comment_publication = display_cache_get_comment_publication_clears_host_entity_cache_settings($entity_type, $bundle, $view_mode);
+
+    $form['display_cache']['clear_on_comment_publication'] = array(
+      '#default_value' => $clear_on_comment_publication,
+      '#description' => t('Should the display cache for this view mode be cleared, if a comment is (un-)published or deleted for this node type.<br />
+          This could be useful if you use any information about the comments in a view mode.'),
+      '#states' => array(
+        'invisible' => array(
+          'input[name="display_cache_use"]' => array('value' => 0),
+          $settings['display_cache_use'] => FALSE
+        ),
+      ),
+      '#title' => t('Clear display cache on comment (un-)publication/deletion'),
+      '#type' => 'checkbox',
+    );
+  }
+
   // Add forms for field settings.
   $fields = array();
   $field_instances = field_info_instances($entity_type, $bundle);
@@ -133,6 +164,7 @@ function display_cache_field_ui_form(&$form, &$form_state) {
     '#type' => 'fieldset',
     '#collapsible' => TRUE,
     '#collapsed' => TRUE,
+    '#group' => 'additional_settings',
     '#access' => user_access('administer display cache'),
     '#description' => t('Use this options to cache fields with less granularity.'),
   );
@@ -341,4 +373,42 @@ function display_cache_view_mode_settings_form_submit($form, $form_state) {
     $display_cache_variables[] = $variable_name;
     variable_set('display_cache_variables', $display_cache_variables);
   }
+
+  if ($entity_type === 'node') {
+    $clear_on_comment_publication_settings = display_cache_get_comment_publication_clears_host_entity_cache_settings($entity_type, $bundle);
+
+    $clear_on_comment_publication_settings[$view_mode] = $values['clear_on_comment_publication'];
+
+    $variable_name = display_cache_get_comment_publication_clears_host_entity_cache_setting_name($entity_type, $bundle);
+    variable_set($variable_name, $clear_on_comment_publication_settings);
+    // Unset the global clearing for this node type, because else it would over-
+    // write this setting.
+    variable_del('display_cache_comment_publication_clears_host_entity_cache_' . $bundle);
+
+    if (!in_array($variable_name, $display_cache_variables)) {
+      $display_cache_variables[] = $variable_name;
+      variable_set('display_cache_variables', $display_cache_variables);
+    }
+  }
+}
+
+/**
+ * Alters the node_type_form form.
+ *
+ * @param array $form
+ *   The form to alter.
+ * @param array $form_state
+ *   The form state.
+ */
+function display_cache_node_type_form(&$form, &$form_state) {
+  if (isset($form['comment'])) {
+    $form['comment']['display_cache_comment_publication_clears_host_entity_cache'] = array(
+      '#description' => t('Should the display cache for this node type be cleared, if a comment is (un-)published or deleted for this node type.<br />
+        This could be useful if you use any information about the comments in a view mode.<br />
+        <b>Please be aware that on a site with a lot of view modes for this node type and an active community this can have a big perfomance impact.</b>'),
+      '#title' => t('Clear host entity display cache on comment (un-)publication/deletion'),
+      '#type' => 'checkbox',
+      '#default_value' => variable_get('display_cache_comment_publication_clears_host_entity_cache_' . $form['#node_type']->type, FALSE),
+    );
+  }
 }
diff --git a/display_cache.install b/display_cache.install
index 5797c29..4e39cd5 100644
--- a/display_cache.install
+++ b/display_cache.install
@@ -37,4 +37,10 @@ function display_cache_uninstall() {
   }

   variable_del('display_cache_variables');
+
+  $node_types = node_type_get_types();
+
+  foreach ($node_types as $type) {
+    variable_del('display_cache_comment_publication_clears_host_entity_cache_' . $type->type);
+  }
 }
diff --git a/display_cache.module b/display_cache.module
index 2f3b136..6165649 100644
--- a/display_cache.module
+++ b/display_cache.module
@@ -86,6 +86,81 @@ function display_cache_permission() {
 }

 /**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * FORM ID: node_type
+ */
+function display_cache_form_node_type_form_alter(&$form, &$form_state) {
+  if (user_access('administer display cache')) {
+    form_load_include($form_state, 'inc', 'display_cache', 'display_cache.admin');
+    display_cache_node_type_form($form, $form_state);
+  }
+}
+
+/**
+ * Implements hook_comment_publish().
+ */
+function display_cache_comment_publish($comment) {
+  display_cache_clear_comment_host_entity_cache($comment);
+}
+
+/**
+ * Implements hook_comment_update().
+ *
+ * This basically implements hook_comment_unpublished() which is not implemented
+ * by the comment module.
+ */
+function display_cache_comment_update($comment) {
+  if ($comment->original && $comment->original->status != $comment->status && $comment->status == COMMENT_NOT_PUBLISHED) {
+    display_cache_clear_comment_host_entity_cache($comment);
+  }
+}
+
+/**
+ * Implements hook_comment_delete().
+ */
+function display_cache_comment_delete($comment) {
+  if ($comment->status == COMMENT_PUBLISHED) {
+    display_cache_clear_comment_host_entity_cache($comment);
+  }
+}
+
+/**
+ * Implemenets hook_node_type_delete().
+ */
+function display_cache_node_type_delete($info) {
+  variable_del('display_cache_comment_publication_clears_host_entity_cache_' . $info->type);
+  variable_del('display_cache_comment_publication_clears_host_entity_cache_node_' . $info->type);
+}
+
+/**
+ * Clears the given comments' host entity if needed.
+ *
+ * @param Object $comment
+ *   The comment.
+ */
+function display_cache_clear_comment_host_entity_cache($comment) {
+  if ($comment->nid) {
+    $node = node_load($comment->nid);
+
+    $should_clear_host_entity_cache_globally = variable_get('display_cache_comment_publication_clears_host_entity_cache_' . $node->type, FALSE);
+
+    $view_modes_to_clear = display_cache_get_comment_publication_clears_host_entity_cache_settings('node', $node->type);
+
+    if ($should_clear_host_entity_cache_globally) {
+      display_cache_flush_cache('node', $node);
+    }
+    elseif(!empty($view_modes_to_clear) && array_sum($view_modes_to_clear) > 0) {
+      foreach ($view_modes_to_clear as $view_mode => $clear) {
+        if ($clear) {
+          display_cache_flush_cache('node', $node, $view_mode);
+        }
+      }
+    }
+  }
+}
+
+/**
  * Flushes the display cache of a given element.
  *
  * If one argument is missing, all following arguments will be replaced with a
@@ -172,6 +247,31 @@ function display_cache_get_settings($entity_type, $bundle, $view_mode) {
 }

 /**
+ * Collects the comment publication host entity cache clearing settings.
+ *
+ * @param string $entity_type
+ *   This is almost all the type 'node'. It is just here for completeness.
+ * @param string $bundle
+ *   The bundle to check.
+ * @param string $view_mode
+ *   If given, the settings obtained will be searched for this specific view
+ *   mode.
+ *
+ * @return mixed(array|bool)
+ *   Returns a setting array or a bool if $view_mode has been given.
+ */
+function display_cache_get_comment_publication_clears_host_entity_cache_settings($entity_type, $bundle, $view_mode = NULL) {
+  $variable_name = display_cache_get_comment_publication_clears_host_entity_cache_setting_name($entity_type, $bundle);
+  $result = variable_get($variable_name, array());
+
+  if (!is_null($view_mode)) {
+    $result = isset($result[$view_mode]) ? $result[$view_mode] : FALSE;
+  }
+
+  return $result;
+}
+
+/**
  * Implements hook_entity_view_alter().
  */
 function display_cache_entity_view_alter(&$build, $entity_type) {
@@ -429,3 +529,16 @@ function display_cache_get_cache_keys($entity_type, $entity_id = NULL, $view_mod
 function _display_cache_clear_cache() {
   cache_clear_all('*', DISPLAY_CACHE_CACHE_BIN, TRUE);
 }
+
+/**
+ * Returns setting name for comment publication host entity clearing.
+ */
+function display_cache_get_comment_publication_clears_host_entity_cache_setting_name($entity_type, $bundle) {
+  $variable_name_parts = array(
+    'display_cache_comment_publication_clears_host_entity_cache',
+    $entity_type,
+    $bundle
+  );
+
+  return implode('_', $variable_name_parts);
+}
