Я не знаю, правильно ли я понимаю, как работает аспект кэширования ETag, если есть какая-то другая проблема, с которой я сталкиваюсь, но я проведу вас через мою ситуацию.
Насколько я понимаю, ETag - это уникальный хеш, который создается на основе информации о файле и отправляется как часть заголовка Response для уникальной идентификации файла.Если файл обновляется, то информация меняется, и, следовательно, ETag для файла также изменяется.
В моем проекте мне нужно, чтобы каждый раз, когда я вносил изменения в файл, нужно было получать новый файл JS.Я не могу использовать теги версий или уникальные хэши как часть имени файла.Я думал, что ETag будет работать там, где
Http Request
GET myFile.js
Client ------------------> SERVER
Http Response 200
Http Response Header
accept-ranges: bytes
cache-control: max-age=86400, public
etag: "a7-58c3bb52101c4"
......
myFile.js
Client <------------------ SERVER
// myFile.js has not been changed
Http Request
GET myFile.js
Client ------------------> SERVER
Http Response 304
Http Response Header
accept-ranges: bytes
cache-control: max-age=86400, public
etag: "a7-58c3bb52101c4"
......
Client uses cached version of file
// myFile has been changed
Http Request
GET myFile.js
Client ------------------> SERVER
Http Response 200
Http Response Header
accept-ranges: bytes
cache-control: max-age=86400, public
etag: "88-58c3a1cb8474f" // new etag generated
......
myFile.js
Client <------------------ SERVER
Так что, если вы запросите файл еще раз, и никакие изменения не будут внесены ... этаг останется прежним, и вы получите 304, который покажет, что кэшированныйверсия должна быть использована.
Если файл был изменен, etag также будет другим, и новая копия файла будет отправлена сервером.
Так я и ожидал, что он будет работать.
МОЯ ПРОБЛЕМА: Когда я обновляю myFile.js
, мне кажется, что я никогда не получу новый ETag обратно.По умолчанию используется версия файла в формате cahced.Если я очищаю кеш, то получаю последний файл и новый ETag.Это мне кажется, чтобы победить цель.Это так работает или я что-то здесь неправильно понимаю?