Ответ в том, что это зависит.
Существует два вида этагов: слабый и сильный.Слабые позволяют вам выполнять определенные условные операции, но для большинства из них требуются сильные etags.
Единственное ограничение для сильного etag состоит в том, что если представление изменяется по какой-либо причине, то и etag изменяется.Если это файл, вы можете генерировать хеш, но это заставляет вас сохранять сущность в памяти, пока вы ее генерируете.В качестве альтернативы, вы можете просто передать содержимое и добавить Etag в качестве завершающего HTTP-заголовка, но в настоящее время практически ни один сервер не поддерживает эту (очень полезную и нелюбимую) часть функциональности.
Тики имеют низкое разрешение, и этоВозможно, что две последовательные записи в одном и том же файле будут иметь одинаковое количество тактов, даже если содержимое различно.На этом этапе etag теперь недействителен, если он был сильным, а вы в мутной воде.Та же проблема, что и с Last-Modified действительно.Большинство HTTP-серверов имеют дело с этим, чтобы дать файлу etag, основанный на нескольких его свойствах, таких как временная метка, размер и, возможно, идентификатор объекта файла (inode в apache, возможно, добавление полного пути к записи хранилища объектов в NT, иIIS также добавляет счетчик к этому значению, поэтому два изменения конфигурации на сервере будут генерировать разные etags, если что-то изменится).
Если вы используете какую-либо базу данных, версия id + должна быть сильной etag(при условии, что контент, который вы имеете, не является совокупностью нескольких вещей, каждая из которых может изменяться независимо друг от друга и без версии с изменяющимся корнем).
Так как его вычисление действительно зависит от вашего сценария и сохраненияхеш файла при записи (перед началом обслуживания), вероятно, поможет вам больше всего, тем более что это очень полезная функция по многим другим причинам.