Hello! On Sat, Jan 13, 2024 at 10:34:08AM +0300, izor...@gmail.com wrote:
> Добрый день, Максим. > > Вы писали 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 форматы. Именно об этом и тикет, да. Мне тоже вариант с файлами кажется более интересным - с extended-атрибутами, возможно, код будет чуть проще и, вероятно, быстрее, в силу меньшего количества необходимых системных вызовов, но там сразу возникает масса проблем как с портабельностью, так и с хранением/синхронизацией (e.g., в том же nix store они могут просто не работать). -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru