diff --git a/core/lib/Drupal/Core/Block/BlockBase.php b/core/lib/Drupal/Core/Block/BlockBase.php
index 7ec2e6c..4cc75b8 100644
--- a/core/lib/Drupal/Core/Block/BlockBase.php
+++ b/core/lib/Drupal/Core/Block/BlockBase.php
@@ -186,23 +186,6 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       '#default_value' => ($this->configuration['label_display'] === BlockInterface::BLOCK_LABEL_VISIBLE),
       '#return_value' => BlockInterface::BLOCK_LABEL_VISIBLE,
     );
-    // Identical options to the ones for page caching.
-    // @see \Drupal\system\Form\PerformanceForm::buildForm()
-    $period = array(0, 60, 180, 300, 600, 900, 1800, 2700, 3600, 10800, 21600, 32400, 43200, 86400);
-    $period = array_map(array(\Drupal::service('date.formatter'), 'formatInterval'), array_combine($period, $period));
-    $period[0] = '<' . $this->t('no caching') . '>';
-    $period[\Drupal\Core\Cache\Cache::PERMANENT] = $this->t('Forever');
-    $form['cache'] = array(
-      '#type' => 'details',
-      '#title' => $this->t('Cache settings'),
-    );
-    $form['cache']['max_age'] = array(
-      '#type' => 'select',
-      '#title' => $this->t('Maximum age'),
-      '#description' => $this->t('The maximum time this block may be cached.'),
-      '#default_value' => $this->configuration['cache']['max_age'],
-      '#options' => $period,
-    );
 
     // Add plugin-specific settings for this block type.
     $form += $this->blockForm($form, $form_state);
diff --git a/core/modules/block/src/BlockForm.php b/core/modules/block/src/BlockForm.php
index 08d7508..76c28a2 100644
--- a/core/modules/block/src/BlockForm.php
+++ b/core/modules/block/src/BlockForm.php
@@ -10,6 +10,7 @@
 use Drupal\block\Event\BlockContextEvent;
 use Drupal\block\Event\BlockEvents;
 use Drupal\Component\Utility\Html;
+use Drupal\Core\Cache\Cache;
 use Drupal\Core\Entity\EntityForm;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Executable\ExecutableManagerInterface;
@@ -175,6 +176,12 @@ public function form(array $form, FormStateInterface $form_state) {
       '#prefix' => '<div id="edit-block-region-wrapper">',
       '#suffix' => '</div>',
     );
+
+    $form['cache']['max_age'] = array(
+      '#type' => 'value',
+      '#default_value' => Cache::PERMANENT,
+    );
+
     $form['#attached']['library'][] = 'block/drupal.block.admin';
     return $form;
   }
diff --git a/core/modules/block/src/Tests/BlockInterfaceTest.php b/core/modules/block/src/Tests/BlockInterfaceTest.php
index 5e8b54c..a23ea70 100644
--- a/core/modules/block/src/Tests/BlockInterfaceTest.php
+++ b/core/modules/block/src/Tests/BlockInterfaceTest.php
@@ -61,10 +61,6 @@ public function testBlockInterface() {
     $this->assertIdentical($display_block->getConfiguration(), $expected_configuration, 'The block configuration was updated correctly.');
     $definition = $display_block->getPluginDefinition();
 
-    $period = array(0, 60, 180, 300, 600, 900, 1800, 2700, 3600, 10800, 21600, 32400, 43200, 86400);
-    $period = array_map(array(\Drupal::service('date.formatter'), 'formatInterval'), array_combine($period, $period));
-    $period[0] = '<' . t('no caching') . '>';
-    $period[\Drupal\Core\Cache\Cache::PERMANENT] = t('Forever');
     $expected_form = array(
       'provider' => array(
         '#type' => 'value',
@@ -88,17 +84,6 @@ public function testBlockInterface() {
         '#default_value' => TRUE,
         '#return_value' => 'visible',
       ),
-      'cache' => array(
-        '#type' => 'details',
-        '#title' => t('Cache settings'),
-        'max_age' => array(
-          '#type' => 'select',
-          '#title' => t('Maximum age'),
-          '#description' => t('The maximum time this block may be cached.'),
-          '#default_value' => Cache::PERMANENT,
-          '#options' => $period,
-        ),
-      ),
       'display_message' => array(
         '#type' => 'textfield',
         '#title' => t('Display message'),
diff --git a/core/modules/node/src/Plugin/Block/SyndicateBlock.php b/core/modules/node/src/Plugin/Block/SyndicateBlock.php
index f2a6a3e..d5c64a2 100644
--- a/core/modules/node/src/Plugin/Block/SyndicateBlock.php
+++ b/core/modules/node/src/Plugin/Block/SyndicateBlock.php
@@ -52,20 +52,6 @@ public function build() {
   /**
    * {@inheritdoc}
    */
-  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $form = parent::buildConfigurationForm($form, $form_state);
-
-    // @see ::getCacheMaxAge()
-    $form['cache']['#disabled'] = TRUE;
-    $form['cache']['max_age']['#value'] = Cache::PERMANENT;
-    $form['cache']['#description'] = $this->t('This block is always cached forever, it is not configurable.');
-
-    return $form;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getCacheMaxAge() {
     // The 'Syndicate' block is permanently cacheable, because its
     // contents can never change.
diff --git a/core/modules/system/src/Plugin/Block/SystemMainBlock.php b/core/modules/system/src/Plugin/Block/SystemMainBlock.php
index f164f66..92475ab 100644
--- a/core/modules/system/src/Plugin/Block/SystemMainBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemMainBlock.php
@@ -43,17 +43,4 @@ public function build() {
     return $this->mainContent;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $form = parent::buildConfigurationForm($form, $form_state);
-
-    $form['cache']['#disabled'] = TRUE;
-    $form['cache']['#description'] = $this->t("This block's maximum age cannot be configured, because it depends on the contents.");
-    $form['cache']['max_age']['#value'] = Cache::PERMANENT;
-
-    return $form;
-  }
-
 }
diff --git a/core/modules/system/src/Plugin/Block/SystemMessagesBlock.php b/core/modules/system/src/Plugin/Block/SystemMessagesBlock.php
index 611fd23..5358dad 100644
--- a/core/modules/system/src/Plugin/Block/SystemMessagesBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemMessagesBlock.php
@@ -43,20 +43,6 @@ public function build() {
   /**
    * {@inheritdoc}
    */
-  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $form = parent::buildConfigurationForm($form, $form_state);
-
-    // @see ::getCacheMaxAge()
-    $form['cache']['#description'] = $this->t('This block is cacheable forever, it is not configurable.');
-    $form['cache']['max_age']['#value'] = Cache::PERMANENT;
-    $form['cache']['max_age']['#disabled'] = TRUE;
-
-    return $form;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getCacheMaxAge() {
     // The messages are session-specific and hence aren't cacheable, but the
     // block itself *is* cacheable because it uses a #post_render_cache callback
diff --git a/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php b/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php
index c768e21..85baafd 100644
--- a/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemPoweredByBlock.php
@@ -31,20 +31,6 @@ public function build() {
   /**
    * {@inheritdoc}
    */
-  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $form = parent::buildConfigurationForm($form, $form_state);
-
-    // @see ::getCacheMaxAge()
-    $form['cache']['#disabled'] = TRUE;
-    $form['cache']['max_age']['#value'] = Cache::PERMANENT;
-    $form['cache']['#description'] = $this->t('This block is always cached forever, it is not configurable.');
-
-    return $form;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getCacheMaxAge() {
     // The 'Powered by Drupal' block is permanently cacheable, because its
     // contents can never change.
diff --git a/core/modules/views/src/Plugin/Block/ViewsBlockBase.php b/core/modules/views/src/Plugin/Block/ViewsBlockBase.php
index 953dfae..48ba8c4 100644
--- a/core/modules/views/src/Plugin/Block/ViewsBlockBase.php
+++ b/core/modules/views/src/Plugin/Block/ViewsBlockBase.php
@@ -8,6 +8,7 @@
 namespace Drupal\views\Plugin\Block;
 
 use Drupal\Core\Block\BlockBase;
+use Drupal\Core\Cache\Cache;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\views\ViewExecutableFactory;
@@ -158,6 +159,24 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       $form['views_label']['#description'] = $this->t('Changing the title here means it cannot be dynamically altered anymore.');
     }
 
+    // Identical options to the ones for page caching.
+    // @see \Drupal\system\Form\PerformanceForm::buildForm()
+    $period = array(0, 60, 180, 300, 600, 900, 1800, 2700, 3600, 10800, 21600, 32400, 43200, 86400);
+    $period = array_map(array(\Drupal::service('date.formatter'), 'formatInterval'), array_combine($period, $period));
+    $period[0] = '<' . $this->t('no caching') . '>';
+    $period[Cache::PERMANENT] = $this->t('Forever');
+    $form['cache'] = array(
+      '#type' => 'details',
+      '#title' => $this->t('Cache settings'),
+    );
+    $form['cache']['max_age'] = array(
+      '#type' => 'select',
+      '#title' => $this->t('Maximum age'),
+      '#description' => $this->t('The maximum time this block may be cached.'),
+      '#default_value' => $this->configuration['cache']['max_age'],
+      '#options' => $period,
+    );
+
     return $form;
   }
 
