Re: Патч ETags в NixOS

izorkin на gmail.com izorkin на gmail.com
Сб Янв 13 07:34:08 UTC 2024


Добрый день, Максим.

Вы писали 13 января 2024 г., 3:28:36:

> Hello!

> Hash-сумма файла в качестве ETag - в целом отличное решение, 
> проблема тут ровно одна: её нужно как-то получить, ибо системный 
> вызов fstat() никаких hash-сумм почему-то не возвращает.  Считать 
> на лету - очевидно, плохой вариант для нагруженного сервера, так 
> как файл придётся на каждый запрос читать дважды.  А получать 
> hash-сумму откуда-то ещё, скажем из внешнего файла или 
> extended-атрибутов - выглядит в лучшем случае дополнительной фичей 
> (смотри https://trac.nginx.org/nginx/ticket/2351 например).

Теоретически можно было бы сделать предварительное сканирование
файлов и генерация хэш сумм при старте в фоновом режиме, для тех
файлов, которыее расположены только в /nix/store или любой другой
директории, указанной пользователем. А результаты сохранить в кеш.

Если генерировать хэш-сумму на лету, то зачем надо генерировать её
каждый раз при повторном запросе? Можно же в кэше результат сохранить.
Да и это надо делать только для тех файлов, которые имеют нулевую дату.
А файлы в /nix/store меняются не часто, только при обновлении ОС.

Вариант с файлами хэш-сумм выглядит более оптимальным. При генерации
файлов в /nix/store можно дополнительно добавить возможность генерации
хэш-суммы для каждого файла, который требуется для работы сайта. Таким
же способом в некоторых приложениях организована генерация статических
файлов в gzip и brotli форматы.


-- 
С уважением,
 Izorkin                          mailto:izorkin на gmail.com


Подробная информация о списке рассылки nginx-ru