Hello! On Tue, Nov 21, 2023 at 09:53:16PM +0300, izor...@gmail.com wrote:
> Да, этот патч, забыл указать ссылку. > Проверил без патча и добавлением строки `add_header Last-Modified "";` > В ответе генерируется ETag: "1-4e", "1-75" и т.д. Если после изменения > содержимого файла без изменения размера, то при запросе отдаётся файл > из кеша, т.к. при этом ETag не изменяется. А если размер файла меняется, > кеш обновляется. > Вариант с использованием хеадера Last-Modified не подходит, может надо > как-то учитывать путь к файлу для генерации ETag. Если размера для идентификации версии файла недостаточно, то ожидаемо нужны другие идентификаторы. В классических файловых системах таким идентификатором выступает время модификации файла. В /nix/store, как я понимаю, идея состоит в том, что время модификации не нужно, потому что файлы в рамках конкретного пути не меняются. Решением, целиком повторяющим эту идею, будет использование полного пути из /nix/store в URI, тогда всё будет работать так, как ожидают создатели /nix/store. Если же хочется выкинуть из URI полный путь, то наверное имеет смысл думать в сторону возможности установки ETag'а из переменных (сейчас его можно поменять в ответе клиенту, но это происходит после проверок If-Modified-Since / If-None-Match, и выставленное значение не используется самим nginx'ом). Тогда можно будет поставить и использовать произвольный ETag, основываясь, например, на переменной $realpath_root - то есть сделать штатными средствами примерно то же, что пытались накостылить авторы соответствующего патча в NixOS. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru