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.
Request $request A Request instance:
Boolean $catch whether to process exceptions:
\Exception
protected function lookup(Request $request, $catch = false) {
// if allow_reload and no-cache Cache-Control, allow a cache reload
if ($this->options['allow_reload'] && $request
->isNoCache()) {
$this
->record($request, 'reload');
return $this
->fetch($request);
}
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);
}
$this
->record($request, 'fresh');
$entry->headers
->set('Age', $entry
->getAge());
return $entry;
}