diff --git a/core/modules/views/config/install/views.settings.yml b/core/modules/views/config/install/views.settings.yml
index ae9fa6ba1450dd45b2647d166ed2897c731e206a..62405d55d91a63ce80609210779454ec4c7e9b15 100644
--- a/core/modules/views/config/install/views.settings.yml
+++ b/core/modules/views/config/install/views.settings.yml
@@ -1,5 +1,4 @@
 display_extenders: {  }
-skip_cache: false
 sql_signature: false
 ui:
   show:
diff --git a/core/modules/views/config/schema/views.schema.yml b/core/modules/views/config/schema/views.schema.yml
index 1939f88fb8acbca755d4465dd8811cf95e210c7f..01a9af681e0496d76172e0870ee4ad20383b2dc8 100644
--- a/core/modules/views/config/schema/views.schema.yml
+++ b/core/modules/views/config/schema/views.schema.yml
@@ -10,9 +10,6 @@ views.settings:
       sequence:
         type: string
         label: 'Display extender'
-    skip_cache:
-      type: boolean
-      label: 'Disable views data caching'
     sql_signature:
       type: boolean
       label: 'Add Views signature to all SQL queries'
diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
index 7b764e476899dd979246c2e1f0d7de242660429b..ef24bb6eee649d0994c9e751152bffcb7ac4369e 100644
--- a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
@@ -192,27 +192,20 @@ public function initDisplay(ViewExecutable $view, array &$display, array &$optio
       unset($options['defaults']);
     }
 
-    $skip_cache = \Drupal::config('views.settings')->get('skip_cache');
-
-    if (!$skip_cache) {
-      $cid = 'views:unpack_options:' . hash('sha256', serialize([$this->options, $options])) . ':' . \Drupal::languageManager()->getCurrentLanguage()->getId();
-      if (empty(static::$unpackOptions[$cid])) {
-        $cache = \Drupal::cache('data')->get($cid);
-        if (!empty($cache->data)) {
-          $this->options = $cache->data;
-        }
-        else {
-          $this->unpackOptions($this->options, $options);
-          \Drupal::cache('data')->set($cid, $this->options, Cache::PERMANENT, $this->view->storage->getCacheTags());
-        }
-        static::$unpackOptions[$cid] = $this->options;
+    $cid = 'views:unpack_options:' . hash('sha256', serialize([$this->options, $options])) . ':' . \Drupal::languageManager()->getCurrentLanguage()->getId();
+    if (empty(static::$unpackOptions[$cid])) {
+      $cache = \Drupal::cache('data')->get($cid);
+      if (!empty($cache->data)) {
+        $this->options = $cache->data;
       }
       else {
-        $this->options = static::$unpackOptions[$cid];
+        $this->unpackOptions($this->options, $options);
+        \Drupal::cache('data')->set($cid, $this->options, Cache::PERMANENT, $this->view->storage->getCacheTags());
       }
+      static::$unpackOptions[$cid] = $this->options;
     }
     else {
-      $this->unpackOptions($this->options, $options);
+      $this->options = static::$unpackOptions[$cid];
     }
 
     // Mark the view as changed so the user has a chance to save it.
diff --git a/core/modules/views/src/ViewsData.php b/core/modules/views/src/ViewsData.php
index 8474823cb06183a9c09a6fc51c9e395e2953d2e8..a5c1fa9fa6d07d2e5e4791f4124f908fbc9d6ccc 100644
--- a/core/modules/views/src/ViewsData.php
+++ b/core/modules/views/src/ViewsData.php
@@ -59,13 +59,6 @@ class ViewsData {
    */
   protected $fullyLoaded = FALSE;
 
-  /**
-   * Whether or not to skip data caching and rebuild data each time.
-   *
-   * @var bool
-   */
-  protected $skipCache = FALSE;
-
   /**
    * The current language code.
    *
@@ -92,20 +85,24 @@ class ViewsData {
    *
    * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
    *   The cache backend to use.
-   * @param \Drupal\Core\Config\ConfigFactoryInterface $config
-   *   The configuration factory object to use.
-   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface|\Drupal\Core\Config\ConfigFactoryInterface $module_handler
    *   The module handler class to use for invoking hooks.
-   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
+   * @param \Drupal\Core\Language\LanguageManagerInterface|\Drupal\Core\Extension\ModuleHandlerInterface $language_manager
    *   The language manager.
    */
-  public function __construct(CacheBackendInterface $cache_backend, ConfigFactoryInterface $config, ModuleHandlerInterface $module_handler, LanguageManagerInterface $language_manager) {
+  public function __construct(CacheBackendInterface $cache_backend, ModuleHandlerInterface|ConfigFactoryInterface $module_handler, LanguageManagerInterface|ModuleHandlerInterface $language_manager) {
     $this->cacheBackend = $cache_backend;
-    $this->moduleHandler = $module_handler;
-    $this->languageManager = $language_manager;
-
-    $this->langcode = $this->languageManager->getCurrentLanguage()->getId();
-    $this->skipCache = $config->get('views.settings')->get('skip_cache');
+    if ($module_handler instanceof ConfigFactoryInterface) {
+      $this->moduleHandler = $language_manager;
+      $this->languageManager = func_get_arg(3);
+      $this->langcode = $this->languageManager->getCurrentLanguage()->getId();
+      @trigger_error('Calling ' . __CLASS__ . '::_construct() with the $config argument is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. See https://www.drupal.org/node/2541974', E_USER_DEPRECATED);
+    }
+    else {
+      $this->moduleHandler = $module_handler;
+      $this->languageManager = $language_manager;
+      $this->langcode = $this->languageManager->getCurrentLanguage()->getId();
+    }
   }
 
   /**
@@ -180,14 +177,9 @@ public function get($key) {
    *   The cache ID to return.
    *
    * @return mixed
-   *   The cached data, if any. This will immediately return FALSE if the
-   *   $skipCache property is TRUE.
+   *   The cached data.
    */
   protected function cacheGet($cid) {
-    if ($this->skipCache) {
-      return FALSE;
-    }
-
     return $this->cacheBackend->get($this->prepareCid($cid));
   }
 
diff --git a/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php b/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php
index e4a24f61144068f35f10c0e35d6d08da9f7e0789..4b23fa79d0f57f83b69e9e73a242073b3cbb2ada 100644
--- a/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php
@@ -73,13 +73,33 @@ public function setupContainer() {
 
     $config = [
       'views.settings' => [
-        'skip_cache' => TRUE,
         'display_extenders' => [],
       ],
     ];
 
     $container->set('config.factory', $this->getConfigFactoryStub($config));
 
+    $language = $this->createMock('\Drupal\Core\Language\LanguageInterface');
+    $language->expects($this->any())
+      ->method('getId')
+      ->willReturn('nl');
+
+    $language_manager = $this->getMockBuilder('Drupal\Core\Language\LanguageManagerInterface')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $language_manager->expects($this->any())
+      ->method('getCurrentLanguage')
+      ->willReturn($language);
+    $container->set('language_manager', $language_manager);
+
+    $cache = $this->getMockBuilder('Drupal\Core\Cache\CacheBackendInterface')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $cache->expects($this->any())
+      ->method('get')
+      ->willReturn([]);
+    $container->set('cache.data', $cache);
+
     \Drupal::setContainer($container);
   }
 
@@ -547,6 +567,9 @@ protected function setupViewExecutableAccessPlugin() {
     $view_entity->expects($this->any())
       ->method('id')
       ->willReturn('test_id');
+    $view_entity->expects($this->any())
+      ->method('getCacheTags')
+      ->willReturn([]);
 
     $view = $this->getMockBuilder('Drupal\views\ViewExecutable')
       ->disableOriginalConstructor()
diff --git a/core/modules/views/tests/src/Unit/ViewsDataTest.php b/core/modules/views/tests/src/Unit/ViewsDataTest.php
index 12cf5ac764510036b7ca95d380aacbeb02771a33..b382c427cd401df29cfaeb61cd8b6f427725848a 100644
--- a/core/modules/views/tests/src/Unit/ViewsDataTest.php
+++ b/core/modules/views/tests/src/Unit/ViewsDataTest.php
@@ -65,16 +65,13 @@ protected function setUp(): void {
     $this->cacheBackend = $this->createMock('Drupal\Core\Cache\CacheBackendInterface');
     $this->getContainerWithCacheTagsInvalidator($this->cacheTagsInvalidator);
 
-    $configs = [];
-    $configs['views.settings']['skip_cache'] = FALSE;
-    $this->configFactory = $this->getConfigFactoryStub($configs);
     $this->moduleHandler = $this->createMock('Drupal\Core\Extension\ModuleHandlerInterface');
     $this->languageManager = $this->createMock('Drupal\Core\Language\LanguageManagerInterface');
     $this->languageManager->expects($this->any())
       ->method('getCurrentLanguage')
       ->willReturn(new Language(['id' => 'en']));
 
-    $this->viewsData = new ViewsData($this->cacheBackend, $this->configFactory, $this->moduleHandler, $this->languageManager);
+    $this->viewsData = new ViewsData($this->cacheBackend, $this->moduleHandler, $this->languageManager);
   }
 
   /**
diff --git a/core/modules/views/views.post_update.php b/core/modules/views/views.post_update.php
index 60e024b6e161332c53df74497b2d6ef357decb75..7fe3792007ca7ba3397e0e96b9d5871b3ff09d58 100644
--- a/core/modules/views/views.post_update.php
+++ b/core/modules/views/views.post_update.php
@@ -94,3 +94,13 @@ function views_post_update_fix_revision_id_part(&$sandbox = NULL): void {
       return $view_config_updater->needsRevisionFieldHyphenFix($view);
     });
 }
+
+/**
+ * Remove the skip_cache settings.
+ */
+function views_post_update_remove_skip_cache_setting(): void {
+  \Drupal::configFactory()
+    ->getEditable('views.settings')
+    ->clear('skip_cache')
+    ->save(TRUE);
+}
diff --git a/core/modules/views/views.services.yml b/core/modules/views/views.services.yml
index 8d61f13cc428154007dedd74b8917809686b217d..a4d93228c8ef06ea1f8eb909b4f057f50667beb1 100644
--- a/core/modules/views/views.services.yml
+++ b/core/modules/views/views.services.yml
@@ -58,7 +58,7 @@ services:
     arguments: [wizard, '@container.namespaces', '@cache.discovery', '@module_handler']
   views.views_data:
     class: Drupal\views\ViewsData
-    arguments: ['@cache.default', '@config.factory', '@module_handler', '@language_manager']
+    arguments: ['@cache.default', '@module_handler', '@language_manager']
     tags:
       - { name: backend_overridable }
   Drupal\views\ViewsData: '@views.views_data'
diff --git a/core/modules/views_ui/src/Form/AdvancedSettingsForm.php b/core/modules/views_ui/src/Form/AdvancedSettingsForm.php
index 83e026aaa133d73e78e3e0d67e4c058aa47ddadf..0311ddae6ce50691a36085bc4e9e4be3b2167637 100644
--- a/core/modules/views_ui/src/Form/AdvancedSettingsForm.php
+++ b/core/modules/views_ui/src/Form/AdvancedSettingsForm.php
@@ -40,13 +40,6 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       '#open' => TRUE,
     ];
 
-    $form['cache']['skip_cache'] = [
-      '#type' => 'checkbox',
-      '#title' => $this->t('Disable views data caching'),
-      '#description' => $this->t("Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site."),
-      '#default_value' => $config->get('skip_cache'),
-    ];
-
     $form['cache']['clear_cache'] = [
       '#type' => 'submit',
       '#value' => $this->t("Clear Views' cache"),
@@ -90,7 +83,6 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    */
   public function submitForm(array &$form, FormStateInterface $form_state) {
     $this->config('views.settings')
-      ->set('skip_cache', $form_state->getValue('skip_cache'))
       ->set('sql_signature', $form_state->getValue('sql_signature'))
       ->set('display_extenders', $form_state->getValue('display_extenders', []))
       ->save();
diff --git a/core/modules/views_ui/tests/src/Functional/SettingsTest.php b/core/modules/views_ui/tests/src/Functional/SettingsTest.php
index f926e63b95efc02d66f6888ad5abcbaa27739c96..c04475bd6ae50445d11c82daf3a8e7c776d3706e 100644
--- a/core/modules/views_ui/tests/src/Functional/SettingsTest.php
+++ b/core/modules/views_ui/tests/src/Functional/SettingsTest.php
@@ -151,13 +151,11 @@ public function testEditUI() {
     $this->assertSession()->pageTextContains('The configuration options have been saved.');
 
     $edit = [
-      'skip_cache' => TRUE,
       'sql_signature' => TRUE,
     ];
     $this->drupalGet('admin/structure/views/settings/advanced');
     $this->submitForm($edit, 'Save configuration');
 
-    $this->assertSession()->checkboxChecked('edit-skip-cache');
     $this->assertSession()->checkboxChecked('edit-sql-signature');
 
     // Test the "Clear Views' cache" button.