Главная » Разработка Битрикс » Полезное » Last-Modified в Битрикс — HTTP-заголовок для кеширования страниц

Last-Modified в Битрикс — HTTP-заголовок для кеширования страниц

Last-Modified — это HTTP-заголовок, который сообщает браузеру и поисковым системам дату последнего изменения страницы. В Битрикс его можно использовать для оптимизации кеширования и снижения нагрузки на сервер.

Краткий ответ

В Битрикс заголовок Last-Modified отправляется через header() и часто используется вместе с проверкой If-Modified-Since для отдачи 304 Not Modified.

<?php
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
?>

Зачем нужен Last-Modified

Заголовок помогает:
  • уменьшить нагрузку на сервер
  • ускорить загрузку страниц
  • улучшить SEO
  • оптимизировать работу браузерного кеша

Нужна помощь с Битрикс?





    Как работает Last-Modified

    Схема работы:
    1. сервер отправляет дату изменения страницы
    2. браузер сохраняет её
    3. при следующем запросе отправляется If-Modified-Since
    4. сервер решает, отдавать 304 или новый контент

    Рабочий пример для Битрикс

    Простой вариант установки Last-Modified

    
    <?php
    
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
    {
        die();
    }
    
    $lastModified = date("D, d M Y H:i:s", strtotime("now")) . " GMT";
    
    header("Last-Modified: " . $lastModified);
    ?>
    

    Продвинутый вариант с If-Modified-Since

    
    <?php
    
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
    {
        die();
    }
    
    // дата последнего изменения (например, из БД)
    $lastModifiedTime = strtotime("2026-06-10 12:00:00");
    $lastModified = gmdate("D, d M Y H:i:s", $lastModifiedTime) . " GMT";
    
    // проверка запроса от браузера
    if (!empty($_SERVER['HTTP_IF_MODIFIED_SINCE']))
    {
        $ifModifiedSince = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
    
        if ($ifModifiedSince >= $lastModifiedTime)
        {
            header("HTTP/1.1 304 Not Modified");
            exit;
        }
    }
    
    // отправка заголовка
    header("Last-Modified: " . $lastModified);
    ?>
    

    Как использовать Last-Modified в Битрикс правильно

    Лучшее место для установки заголовка — component.php или init.php, в зависимости от архитектуры проекта.

    Пример с инфоблоками

    
    <?php
    
    $lastChange = CIBlockElement::GetList(
        [],
        ["IBLOCK_ID" => 5],
        false,
        ["nTopCount" => 1],
        ["TIMESTAMP_X"]
    );
    
    if ($item = $lastChange->Fetch())
    {
        $lastModifiedTime = strtotime($item["TIMESTAMP_X"]);
        header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastModifiedTime) . " GMT");
    }
    ?>
    

    Связка Last-Modified и кеширования

    Last-Modified хорошо работает вместе с кешированием Битрикс:
    • компонентный кеш
    • managed cache
    • HTTP cache

    Типичные ошибки

    1. Отправка заголовка после вывода HTML

    
    echo "test";
    header("Last-Modified: ..."); // ❌ ошибка
    

    2. Неверный формат даты

    HTTP требует формат GMT.

    3. Отсутствие проверки If-Modified-Since

    Без неё сервер всегда отдает 200 OK.

    4. Установка в шаблоне

    Лучше не размещать header в template.php.

    Лучшие практики

    • используйте GMT формат даты
    • добавляйте If-Modified-Since проверку
    • берёте дату из реального источника (БД)
    • не отправляйте заголовки после вывода контента
    • сочетайте с кешированием Битрикс

    FAQ

    Что делает Last-Modified?

    Сообщает браузеру дату последнего изменения страницы.

    Зачем нужен If-Modified-Since?

    Позволяет отдавать код 304, если страница не изменилась.

    Можно ли использовать в Битрикс?

    Да, это стандартная практика оптимизации.

    Где лучше устанавливать заголовок?

    В component.php, init.php или контроллере.

    Заключение

    Last-Modified в Битрикс — это простой и эффективный способ оптимизации загрузки страниц. При правильной реализации он снижает нагрузку на сервер, ускоряет сайт и улучшает SEO-показатели.
    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    Инструменты
    База знаний