LINUX.ORG.RU

Автоматическая генерация ETag для ответа в nginx

 etag,


0

3

Можно ли заставит nginx генерировать хеш-сумму ответа (динамического или статического) в ETag, так чтобы клиент не выкачивал заново страницу если бэкенд вернул такую же как в прошлый раз?

★★★★★
Ответ на: комментарий от disarmer

на динамических никак

Вот почему так? Какая разница нджинксу откуда брать данные - из файла или с бекенда, а потом посчитать хеш.

drull ★☆☆☆
()
Ответ на: комментарий от drull

Видимо серьезный энтерпрайз может сам посчитать хеш в приложении(а там куда элегантнее посчитать хеш входных параметров страницы и не генерить всю разметку), а те, кто не может, не покупают поддержку.

Плюс файл почти не меняется, а динамика почти всегда, так что пересчитывать придётся каждый раз.

disarmer ★★★
()
Ответ на: комментарий от disarmer

Плюс файл почти не меняется, а динамика почти всегда, так что пересчитывать придётся каждый раз.

Для файла тоже нужно пересчитывать каждый раз, иначе с чем ты будешь сравнивать?

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от disarmer

Видимо серьезный энтерпрайз может сам посчитать хеш в приложении

Так смысл же в том чтобы не срать траффиком.

drull ★☆☆☆
()
Ответ на: комментарий от vurdalak

Хранить хеш файла и время изменения можно в памяти, я думаю nginx так и делает(ну или стоило бы так делать). Если файл обновился - пересчитать хеш и положить в память

disarmer ★★★
()
Ответ на: комментарий от disarmer

Хранить хеш файла и время изменения можно в памяти

Для всех файлов? Как-то очень неэффективно.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от drull

А никуда и не надо слать траффик, приложению приходит etag в заголовках, оно решает, нужно ли генерировать страницу или можно отдать только «not modified». Так получается еще меньше трафика и потенциально меньше нагрузки на приложение/БД (не всегда нужно тело страницы генерировать и отдавать nginx'у)

disarmer ★★★
()
Ответ на: комментарий от vurdalak

А каждый раз читать файл и считать хеш эффективнее? Обычно nginx даже не читает файл, так как включен sendfile

Ну это уже tradeoff cpu+диск или немного памяти на файл ( имя, дата изменения(4 байта), хеш(16 байт для md5))

disarmer ★★★
()
Ответ на: комментарий от disarmer

А каждый раз читать файл и считать хеш эффективнее?

С точки зрения расхода памяти — да. Расхода проца — нет. Лучший вариант это файл или база с хэшами.

vurdalak ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.