dynamic_etag

Директива `dynamic_etag` включает автоматическую генерацию заголовков ETag для динамического содержимого, обслуживаемого NGINX.

Синтаксисdynamic_etag on | off | $var;
По умолчаниюoff
Контекстhttp, server, location
Аргументы1

Описание

Директива dynamic_etag является частью модуля NGINX, предназначенного для добавления заголовков ETag к динамически генерируемому содержимому. ETag — это уникальный идентификатор, присваиваемый сервером конкретной версии ресурса, что позволяет клиентам выполнять условные запросы и потенциально снижать использование полосы пропускания, избегая отправки полного ответа для неизменённых ресурсов. Эту директиву можно задавать в контекстах http, server или location, что даёт гибкость в определении её области действия в конфигурации сервера.

При включении модуль вычисляет ETag путём чтения всего тела ответа и вычисления его хеша. Такой подход особенно полезен для динамического содержимого, генерируемого серверными скриптами, такими как PHP, но он также имеет оговорку: чтение всего ответа может противоречить типичной лёгкой модели обработки запросов в NGINX. Кроме того, поскольку модуль опирается на вычисление хеша от тела ответа, он не будет генерировать ETag для HEAD запросов, так как у них нет тела для хеширования, что потенциально может приводить к несогласованности в обработке ETag. Пользователи должны убедиться, что динамическое содержимое действительно выигрывает от использования ETag и что ответы сервера не изменяются с каждым запросом.

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

http {
    server {
        location ~ \.php$ {
            dynamic_etag on;
            fastcgi_pass ...;
        }
    }
}

ETags не будут возвращены для HEAD-запросов из-за отсутствия response body.

Применение dynamic_etag к динамическому содержимому, которое часто меняется, может не дать существенной выгоды в кэшировании.

Убедитесь, что response body согласовано и подходит для генерации ETag, чтобы избежать проблем с кэшированными данными.

Избегайте использования dynamic_etag с ответами, которые меняются при каждом запросе, если не применены соответствующие меры кэширования.

← Ко всем директивам