 core/modules/views/src/ViewExecutable.php | 34 ++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/core/modules/views/src/ViewExecutable.php b/core/modules/views/src/ViewExecutable.php
index d44f477..f3d5e43 100644
--- a/core/modules/views/src/ViewExecutable.php
+++ b/core/modules/views/src/ViewExecutable.php
@@ -491,10 +491,19 @@ public function setArguments(array $args) {
 
   /**
    * Change/Set the current page for the pager.
+   *
+   * @param int $page
+   *   The current page.
+   * @param bool $keep_cacheablity
+   *   Keep the cacheablity, by default we mark the issue as not cacheable.
    */
-  public function setCurrentPage($page) {
+  public function setCurrentPage($page, $keep_cacheablity = FALSE) {
     $this->current_page = $page;
 
+    if (!$keep_cacheablity) {
+      $this->element['#cache']['max-age'] = 0;
+    }
+
     // If the pager is already initialized, pass it through to the pager.
     if (!empty($this->pager)) {
       return $this->pager->setCurrentPage($page);
@@ -531,14 +540,23 @@ public function getItemsPerPage() {
 
   /**
    * Set the items per page on the pager.
+   *
+   * @param int $items_per_page
+   *   The items per page.
+   * @param bool $keep_cacheablity
+   *   Keep the cacheablity, by default we mark the issue as not cacheable.
    */
-  public function setItemsPerPage($items_per_page) {
+  public function setItemsPerPage($items_per_page, $keep_cacheablity = FALSE) {
     $this->items_per_page = $items_per_page;
 
     // If the pager is already initialized, pass it through to the pager.
     if (!empty($this->pager)) {
       $this->pager->setItemsPerPage($items_per_page);
     }
+
+    if (!$keep_cacheablity) {
+      $this->element['#cache']['max-age'] = 0;
+    }
   }
 
   /**
@@ -557,14 +575,23 @@ public function getOffset() {
 
   /**
    * Set the offset on the pager.
+   *
+   * @param int $offset
+   *   The pager offset.
+   * @param bool $keep_cacheablity
+   *   Keep the cacheablity, by default we mark the issue as not cacheable.
    */
-  public function setOffset($offset) {
+  public function setOffset($offset, $keep_cacheablity = FALSE) {
     $this->offset = $offset;
 
     // If the pager is already initialized, pass it through to the pager.
     if (!empty($this->pager)) {
       $this->pager->setOffset($offset);
     }
+
+    if (!$keep_cacheablity) {
+      $this->element['#cache']['max-age'] = 0;
+    }
   }
 
   /**
@@ -1586,6 +1613,7 @@ public function attachDisplays() {
       // Only attach enabled attachments.
       if ($display_handler->isEnabled()) {
         $cloned_view = Views::executableFactory()->get($this->storage);
+        $cloned_view->element &= $this->element;
         $display_handler->attachTo($cloned_view, $this->current_display, $this->element);
       }
     }
