/** * Should be run before routes are executed * Will abort if etag match is found * @param Route $route * @param Request $request * @param Response|null $response * @return Response|null * @throws HttpException */ public function before(Route $route, Request $request, $response = null) { /** * TODO implement other Request Methods */ if (!in_array($request->method(), ['GET', 'HEAD'])) { return null; } if ($this->routecache->checkClientHasValidCache()) { $response = new Response(); $response->setNotModified(); return $response; } $response = $this->routecache->getResponseFromCache(); if (empty($response)) { $route->after('cache.after'); } return $response; }