Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. HttpCache.php

function HttpCache::lookup

Lookups a Response from the cache for the given Request.

When a matching cache entry is found and is fresh, it uses it as the response without forwarding any request to the backend. When a matching cache entry is found but is stale, it attempts to "validate" the entry with the backend using conditional GET. When no matching cache entry is found, it triggers "miss" processing.

Parameters

bool $catch Whether to process exceptions:

Throws

\Exception

2 calls to HttpCache::lookup()
HttpCache::handle in vendor/symfony/http-kernel/HttpCache/HttpCache.php
Handles a Request to convert it to a Response.
HttpCache::lock in vendor/symfony/http-kernel/HttpCache/HttpCache.php
Locks a Request during the call to the backend.

File

vendor/symfony/http-kernel/HttpCache/HttpCache.php, line 318

Class

HttpCache
Cache provides HTTP caching.

Namespace

Symfony\Component\HttpKernel\HttpCache

Code

protected function lookup(Request $request, bool $catch = false) : Response {
    try {
        $entry = $this->store
            ->lookup($request);
    } catch (\Exception $e) {
        $this->record($request, 'lookup-failed');
        if ($this->options['debug']) {
            throw $e;
        }
        return $this->pass($request, $catch);
    }
    if (null === $entry) {
        $this->record($request, 'miss');
        return $this->fetch($request, $catch);
    }
    if (!$this->isFreshEnough($request, $entry)) {
        $this->record($request, 'stale');
        return $this->validate($request, $entry, $catch);
    }
    if ($entry->headers
        ->hasCacheControlDirective('no-cache')) {
        return $this->validate($request, $entry, $catch);
    }
    $this->record($request, 'fresh');
    $entry->headers
        ->set('Age', $entry->getAge());
    return $entry;
}
RSS feed
Powered by Drupal