function PageCache::handle

Same name in other branches
  1. 9 core/modules/page_cache/src/StackMiddleware/PageCache.php \Drupal\page_cache\StackMiddleware\PageCache::handle()
  2. 8.9.x core/modules/page_cache/src/StackMiddleware/PageCache.php \Drupal\page_cache\StackMiddleware\PageCache::handle()
  3. 10 core/modules/page_cache/src/StackMiddleware/PageCache.php \Drupal\page_cache\StackMiddleware\PageCache::handle()

File

core/modules/page_cache/src/StackMiddleware/PageCache.php, line 84

Class

PageCache
Executes the page caching before the main kernel takes over the request.

Namespace

Drupal\page_cache\StackMiddleware

Code

public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = TRUE) : Response {
    // Only allow page caching on master request.
    if ($type === static::MAIN_REQUEST && $this->requestPolicy
        ->check($request) === RequestPolicyInterface::ALLOW) {
        $response = $this->lookup($request, $type, $catch);
    }
    else {
        $response = $this->pass($request, $type, $catch);
        // Don't indicate non-cacheability on responses to uncacheable requests.
        // @see https://tools.ietf.org/html/rfc7231#section-4.2.3
        if ($request->isMethodCacheable()) {
            $response->headers
                ->set(static::HEADER, 'UNCACHEABLE (request policy)');
        }
    }
    return $response;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.