diff --git a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
index a1f1c5e..a2be93a 100644
--- a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
+++ b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
@@ -1205,10 +1205,6 @@ public function isCacheable() {
    */
   public function getCacheContexts() {
     $contexts = [];
-    // By definition arguments depends on the URL.
-    // @todo Once contexts are properly injected into block views we could pull
-    //   the information from there.
-    $contexts[] = 'url';
 
     // Asks all subplugins (argument defaults, argument validator and styles).
     if (($plugin = $this->getPlugin('argument_default')) && $plugin instanceof CacheablePluginInterface) {
diff --git a/core/modules/views/src/Tests/GlossaryTest.php b/core/modules/views/src/Tests/GlossaryTest.php
index 7d55f85..f0cc917 100644
--- a/core/modules/views/src/Tests/GlossaryTest.php
+++ b/core/modules/views/src/Tests/GlossaryTest.php
@@ -71,7 +71,7 @@ public function testGlossaryView() {
     $url = Url::fromRoute('view.glossary.page_1');
 
     // Verify cache tags.
-    $this->assertPageCacheContextsAndTags($url, ['languages:' . LanguageInterface::TYPE_CONTENT, 'languages:' . LanguageInterface::TYPE_INTERFACE, 'theme', 'url', 'user.node_grants:view', 'user.permissions'], [
+    $this->assertPageCacheContextsAndTags($url, ['languages:' . LanguageInterface::TYPE_CONTENT, 'languages:' . LanguageInterface::TYPE_INTERFACE, 'theme', 'url.query_args.pagers:0', 'url.query_args:order', 'url.query_args:sort', 'user.node_grants:view', 'user.permissions'], [
       'config:views.view.glossary',
       'node:' . $nodes_by_char['a'][0]->id(), 'node:' . $nodes_by_char['a'][1]->id(), 'node:' . $nodes_by_char['a'][2]->id(),
       'node_list',
diff --git a/core/modules/views/src/Tests/Plugin/DisplayPageWebTest.php b/core/modules/views/src/Tests/Plugin/DisplayPageWebTest.php
index 31bfd3c..f02b861 100644
--- a/core/modules/views/src/Tests/Plugin/DisplayPageWebTest.php
+++ b/core/modules/views/src/Tests/Plugin/DisplayPageWebTest.php
@@ -53,7 +53,7 @@ public function testArguments() {
 
     $this->drupalGet('test_route_with_argument/1');
     $this->assertResponse(200);
-    $this->assertCacheContexts(['languages:language_interface', 'theme', 'url']);
+    $this->assertCacheContexts(['languages:language_interface', 'theme', 'url.query_args.pagers:0']);
     $result = $this->xpath('//span[@class="field-content"]');
     $this->assertEqual(count($result), 1, 'Ensure that just the filtered entry was returned.');
     $this->assertEqual((string) $result[0], 1, 'The passed ID was returned.');
diff --git a/core/modules/views/views.install b/core/modules/views/views.install
index e8e3e5e..126d477 100644
--- a/core/modules/views/views.install
+++ b/core/modules/views/views.install
@@ -11,3 +11,32 @@
 function views_install() {
   module_set_weight('views', 10);
 }
+
+/**
+ * @addtogroup updates-8.0.x-beta
+ * @{
+ */
+
+/**
+ * Update all views to re-generate the cacheability metadata.
+ */
+function views_update_8001(&$sandbox) {
+  // Load all enable views.
+  $query = \Drupal::service('entity.query')->get('view')
+    ->condition('status', TRUE)
+    ->exists("display.*.display_options.arguments.*")
+    ->execute();
+  $storage = \Drupal::entityManager()->getStorage('view');
+  $views = $storage->loadMultiple($query);
+
+  // Fixes the cache context in the cacheability metadata.
+  // @see https://www.drupal.org/node/2514784
+  /* @var \Drupal\views\Entity\View[] $views */
+  foreach ($views as $view) {
+    $view->save();
+  }
+}
+
+/**
+ * @} End of "addtogroup updates-8.0.x-beta".
+ */
