Задать вопрос

LastModified не работает?

Целый день мудохаюсь с LastModified. Есть такое
<?php
$LastModified_unix = 1294844676; // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
    $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));  
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
    $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    exit;
}
header('Last-Modified: '. $LastModified);
?>

Хоть убей, ответ всегда 200 Ok вместо желаемого 304.

в htaccess прописывал
RewriteEngine on
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]


как горохом об стену
  • Вопрос задан
  • 2065 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
а в заголовки запроса заглядывали? Возможно браузер не посылает вам IF_MODIFIED_SINCE, или запос вы выполняете 1 раз, почитайте как это работает.
Ответ написан
kowap
@kowap Автор вопроса
Разобрался. Нужно в заголовке указывать Content-length
ob_start();
// тут контент
$out = ob_get_contents();
ob_end_clean();
\header('Content-Length: ' . strlen($out));
echo $out;

Но это работает, только если отключен gzip, а он по умолчанию включен на большинстве хостингов, и хостер не может его отключить для одного сайта.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы