last modified
css отдавать через php по виртуальным путям
у меня вот
так сделано
общий алгоритм такой:
берем необходимый файл, смотрим время его модификации по filemtime, преобразуем в $date
далее проверка:
public static function IfModifiedSince(\DateTime $date): bool
{
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$if_modified_since = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($if_modified_since && $if_modified_since >= $date->getTimestamp()) {
return false;
}
}
return true;
}
клиентский код:
$resource - объект Css, Js или картинки.
Вот базовый класс.
if (!Request::IfModifiedSince($resource->getModificationTime())) {
// отдаем 304 заголовок
return $this->getResponse()->setHttpStatusCode(304);
}
$this->getResponse()
->setHeader(Response::HEADER_CONTENT_TYPE, 'text/css; charset=utf-8')
->setHeader('Last-Modified', $resource->getModificationTime()->formatHttpDate())
->setHeader('Cache-Control', 'no-cache, must-revalidate');
// выводим файл