diff --git a/core/modules/page_cache/src/StackMiddleware/PageCache.php b/core/modules/page_cache/src/StackMiddleware/PageCache.php
index 97d53c6..dc448d9 100644
--- a/core/modules/page_cache/src/StackMiddleware/PageCache.php
+++ b/core/modules/page_cache/src/StackMiddleware/PageCache.php
@@ -133,23 +133,6 @@ protected function lookup(Request $request, $type = self::MASTER_REQUEST, $catch
       $response->setPrivate();
     }
 
-    // Negotiate whether to use compression.
-    if (extension_loaded('zlib') && $response->headers->get('Content-Encoding') === 'gzip') {
-      if (strpos($request->headers->get('Accept-Encoding'), 'gzip') !== FALSE) {
-        // The response content is already gzip'ed, so make sure
-        // zlib.output_compression does not compress it once more.
-        ini_set('zlib.output_compression', '0');
-      }
-      else {
-        // The client does not support compression. Decompress the content and
-        // remove the Content-Encoding header.
-        $content = $response->getContent();
-        $content = gzinflate(substr(substr($content, 10), 0, -8));
-        $response->setContent($content);
-        $response->headers->remove('Content-Encoding');
-      }
-    }
-
     // Perform HTTP revalidation.
     // @todo Use Response::isNotModified() as
     //   per https://www.drupal.org/node/2259489.
@@ -181,14 +164,6 @@ protected function lookup(Request $request, $type = self::MASTER_REQUEST, $catch
   /**
    * Fetches a response from the backend and stores it in the cache.
    *
-   * If page_compression is enabled, a gzipped version of the page is stored in
-   * the cache to avoid compressing the output on each request. The cache entry
-   * is unzipped in the relatively rare event that the page is requested by a
-   * client without gzip support.
-   *
-   * Page compression requires the PHP zlib extension
-   * (http://php.net/manual/ref.zlib.php).
-   *
    * @see drupal_page_header()
    *
    * @param \Symfony\Component\HttpFoundation\Request $request
diff --git a/core/modules/page_cache/src/Tests/PageCacheTest.php b/core/modules/page_cache/src/Tests/PageCacheTest.php
index aec0451..5a94ab8 100644
--- a/core/modules/page_cache/src/Tests/PageCacheTest.php
+++ b/core/modules/page_cache/src/Tests/PageCacheTest.php
@@ -222,7 +222,6 @@ function testConditionalRequests() {
   function testPageCache() {
     $config = $this->config('system.performance');
     $config->set('cache.page.max_age', 300);
-    $config->set('response.gzip', 1);
     $config->save();
 
     // Fill the cache.
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index c23ed7e..65cc822 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -185,13 +185,6 @@ system.performance:
         gzip:
           type: boolean
           label: 'Compress JavaScript files.'
-    response:
-      type: mapping
-      label: 'Response performance settings'
-      mapping:
-        gzip:
-          type: boolean
-          label: 'Compress cached pages'
     stale_file_threshold:
       type: integer
       label: 'Stale file threshold'
diff --git a/core/modules/system/migration_templates/d6_system_performance.yml b/core/modules/system/migration_templates/d6_system_performance.yml
index 6f9666e..70a03d6 100644
--- a/core/modules/system/migration_templates/d6_system_performance.yml
+++ b/core/modules/system/migration_templates/d6_system_performance.yml
@@ -14,7 +14,6 @@ process:
   'css/preprocess': preprocess_css
   'js/preprocess': preprocess_js
   'cache/page/max_age': cache_lifetime
-  'response/gzip': page_compression
 destination:
   plugin: config
   config_name: system.performance
diff --git a/core/modules/system/src/Tests/Update/RemoveResponseGzipFromSystemPerformanceConfigurationTest.php b/core/modules/system/src/Tests/Update/RemoveResponseGzipFromSystemPerformanceConfigurationTest.php
new file mode 100644
index 0000000..143b5c6
--- /dev/null
+++ b/core/modules/system/src/Tests/Update/RemoveResponseGzipFromSystemPerformanceConfigurationTest.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Drupal\system\Tests\Update;
+
+/**
+ * Ensures that response.gzip is removed from system.performance configuration.
+ *
+ * @group Update
+ */
+class RemoveResponseGzipFromSystemPerformanceConfigurationTest extends UpdatePathTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setDatabaseDumpFiles() {
+    $this->databaseDumpFiles = [
+      __DIR__ . '/../../../tests/fixtures/update/drupal-8.bare.standard.php.gz',
+    ];
+  }
+
+  /**
+   * Ensures that response.gzip is removed from system.performance
+   * configuration.
+   */
+  public function testUpdate() {
+    \Drupal::configFactory()->getEditable('system.performance')
+      ->set('response.gzip', 1)
+      ->save();
+
+    $this->runUpdates();
+
+    $system_performance = \Drupal::config('system.performance')->get();
+    $this->assertFalse(isset($system_performance['response.gzip']), 'Configuration response.gzip has been removed from system.performance.');
+  }
+
+}
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index f9c72f7..d836121 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -1979,5 +1979,15 @@ function system_update_8400(&$sandbox) {
 }
 
 /**
+ * Remove response.gzip (and response) from system module configuration.
+ */
+function system_update_8401() {
+  \Drupal::configFactory()->getEditable('system.performance')
+    ->clear('response.gzip')
+    ->clear('response')
+    ->save();
+}
+
+/**
  * @} End of "addtogroup updates-8.4.x".
  */
diff --git a/core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php b/core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php
index c8e800b..33c963d 100644
--- a/core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php
+++ b/core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php
@@ -92,9 +92,6 @@ class MigrateSystemConfigurationTest extends MigrateDrupal6TestBase {
       ],
       // stale_file_threshold is not handled by the migration.
       'stale_file_threshold' => 2592000,
-      'response' => [
-        'gzip' => TRUE,
-      ],
     ],
     'system.rss' => [
       // channel is not handled by the migration.
diff --git a/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php b/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php
index 22e9ba7..0216e2d 100644
--- a/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php
+++ b/core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php
@@ -95,9 +95,6 @@ class MigrateSystemConfigurationTest extends MigrateDrupal7TestBase {
       ],
       // stale_file_threshold is not handled by the migration.
       'stale_file_threshold' => 2592000,
-      'response' => [
-        'gzip' => TRUE,
-      ],
     ],
     'system.rss' => [
       'channel' => [
