Если у вас все запросы на сервер заведены через какой-нибудь скрипт через htaccess, например для записи собственной статистики или для ручного определения что можно отдавать, а что нельзя, то желательно правильно обрататывать всякие “новые” (хттп 1.1) запросы, типа IfModifiedSince. Это позволяет сэкономить ресурсы сервера, если запрашиваемое является статическим файлом, но тем не менее отдаётся скриптом. Тогда, если клиент прислал запрос на файл с заголовком IfModifiedSince, а файл не поменялся, можно вместо файла отдавать заголовок 304. Делается это так:

function setModifiedDate($contentDate) {
    $ifModifiedSince = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) : false;
    if ($ifModifiedSince && strtotime($ifModifiedSince) >= $contentDate) {
        header(‘HTTP/1.0 304 Not Modified’);
        die; // stop processing
    }
    $lastModified = gmdate(‘D, d M Y H:i:s’, $contentDate) . ‘ GMT’;
    header(‘Last-Modified: ‘ . $lastModified);
}

Функцию надо вызывать с именем файла перед выдачей файла клиенту вручную, тогда если он не менялся, то функция отдаст клиенту 304 и прервет выполнение скрипта, а если заголовка нет или файл поменялся – будет выставлен правильный заголовок Last-Modified и скрипт просто продолжит выполняться.

Похожие посты