protected function serveStatic(\React\Http\Request $request, HttpResponse $response)
{
$filePath = $this->getBridge()->getStaticDirectory() . $request->getPath();
if (substr($filePath, -4) !== '.php' && is_file($filePath)) {
$mTime = filemtime($filePath);
if (isset($request->getHeaders()['If-Modified-Since'])) {
$ifModifiedSince = $request->getHeaders()['If-Modified-Since'];
if ($ifModifiedSince && strtotime($ifModifiedSince) === $mTime) {
// Client's cache IS current, so we just respond '304 Not Modified'.
$response->writeHead(304, ['Last-Modified' => gmdate('D, d M Y H:i:s', $mTime) . ' GMT']);
$response->end();
return true;
}
}
$expires = 3600;
//1 h
$response->writeHead(200, ['Content-Type' => $this->mimeContentType($filePath), 'Content-Length' => filesize($filePath), 'Pragma' => 'public', 'Cache-Control' => 'max-age=' . $expires, 'Last-Modified' => gmdate('D, d M Y H:i:s', $mTime) . ' GMT', 'Expires' => gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT']);
$response->end(file_get_contents($filePath));
return true;
}
return false;
}