if_modified_since

Директива 'if_modified_since' контролирует, как NGINX отвечает на запросы на основе метки времени Last-Modified указанного ресурса. — NGINX HTTP Core

if_modified_since
httpserverlocation
Синтаксисif_modified_since on | off | exact;
По умолчаниюoff
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `if_modified_since` используется в NGINX для управления кэшированием содержимого на основе заголовка Last-Modified, отправляемого клиентами. Эта директива может принимать одно из трёх значений: `off`, `on` или `exact`. При значении `on` NGINX проверяет, был ли запрашиваемый ресурс изменён после времени, указанного в заголовке If-Modified-Since запроса клиента. Если ресурс не изменился, NGINX отвечает статусом 304 Not Modified, что указывает клиенту, что он может использовать свою кэшированную версию. Опция `exact` уточняет сравнение, требуя точного совпадения метки времени. Если метка времени If-Modified-Since в запросе совпадает с меткой Last-Modified ресурса, NGINX вернёт ответ 304 Not Modified. Это может быть полезно для более строгой валидации кэша. Напротив, при значении `off` директива отключает такое поведение проверки, и NGINX всегда будет возвращать ресурс, независимо от состояния кэша на стороне клиента. Это может быть полезно в сценариях, где обновления содержимого происходят часто и кэширование не приносит пользы.

Пример конфига

server {
    location /images/ {
        if_modified_since on;
    }
}

Не забудьте проверить, что ваш бэкенд или статические файлы корректно устанавливают заголовок Last-Modified; в противном случае директива не будет работать должным образом.

Опция `exact` не вернёт ответ 304, если метки времени не совпадают точно, в отличие от опции `on`, которая считает любой неизменённый ресурс валидным.

Убедитесь, что ваша стратегия кэширования хорошо сочетается с этой директивой, чтобы избежать лишней нагрузки на сервер.