$this->traces =
[];
// Keep a clone of the original request for surrogates so they can access it.
// We must clone here to get a separate instance because the application will modify the request during
// the application flow (we know it always does because we do ourselves by setting REMOTE_ADDR to 127.0.0.1
// and adding the X-Forwarded-For header, see HttpCache::forward()).
$this->request =
clone $request;
if (null !==
$this->surrogate
) { $this->surrogateCacheStrategy =
$this->surrogate->
createCacheStrategy();
} } $this->traces
[$this->
getTraceKey($request)] =
[];
if (!
$request->
isMethodSafe()) { $response =
$this->
invalidate($request,
$catch);
} elseif ($request->headers->
has('expect'
) || !
$request->
isMethodCacheable()) { $response =
$this->
pass($request,
$catch);
} elseif ($this->options
['allow_reload'
] &&
$request->
isNoCache()) { /*
If allow_reload is configured and the client requests "Cache-Control: no-cache",
reload the cache by fetching a fresh response and caching it (if possible).
*/
$this->
record($request, 'reload'
);