Теги сущностей являются непрозрачными строками именно для того, чтобы сервер мог реализовать их любыми возможными способами, при условии, что он соответствует требованиям RFC 7232 : в частности, если вообще изменяется полезная нагрузка, даже в одном незначительном байте тег сильной сущности также должен измениться.
Серверы, которые не знают природу полезной нагрузки, обычно используют хеш полезной нагрузки. В вашем примере вы можете (предварительно) вычислить sha256(fileInMemory)
и использовать его (или некоторую его часть) в качестве тега сущности.
Серверы, которые действительно знают природу полезной нагрузки, используют множество других тактик, таких как проверка версии полезной нагрузки, хранящейся в некоторой серверной базе данных. В вашем примере, если ваша программа имеет некоторый связанный номер версии, и fileInMemory
никогда не изменяется в пределах одной версии, этот номер версии может работать как тег сущности.
Кстати, обратите внимание, что тег сущности всегда должен быть заключен в двойные кавычки: так что
ETag: "9c314d58"
а не
ETag: 9c314d58