dynamic_etag
Директива `dynamic_etag` включает автоматическую генерацию заголовков ETag для динамического содержимого, обслуживаемого NGINX.
Описание
Директива 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 с ответами, которые меняются при каждом запросе, если не применены соответствующие меры кэширования.