Назад | Перейти на главную страницу

Для чего Apache помещает inode в ETags?

В Интернете есть множество статей, в которых подробно рассказывается, почему вы можете не хотите использовать для ETags стандартный формат inode-mtime-size Apache (см., например, Вот или Вот). Во всех подобных статьях рекомендуется одно и то же: удалять inodes из ваших ETags.

Но мне еще предстоит прочитать что-либо о том, что могло бы мотивировать включение inode для Apache в первую очередь. На первый взгляд, это кажется полезным только в том случае, если нужно иметь возможность различать факсимиле «октет за октетом» одного и того же ресурса, но это, несомненно, противоречит самой цели ETags.

Авторы Apache не известны своим небрежным отношением к Интернет-стандартам, поэтому я чувствую, что что-то упускаю. Кто-нибудь может уточнить?

Я ожидаю, что это будет различать ресурсы одинакового размера и с одинаковым mtime, но на самом деле это не один и тот же файл. Это было бы легко сделать - скажем, у вас есть два файла с разным содержимым, но одинакового размера (не так уж сложно) и одного и того же mtime (сложнее, но если вы скопировали дерево каталогов откуда-то еще, все еще не сложно), a и b, и вы обслуживаете a через Apache. Сейчас mv b a и пока индекс изменяется на a, размер и время - нет - и вы наверху без inode.