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

Вы писали 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:izor...@gmail.com
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить