Я знаю, что этот вопрос задают несколько раз. Но все же я не совсем понимаю эту концепцию. После прочтения много блогов и ответы на SO что я получил естьВ чем разница между заголовком Etag и Expires?
Expiry headers are used when you don’t even want client (and proxies/caches) to make a request to
the server. In ETAG, the client will check with the server for the update, but in expiry
headers, the client will know, when to expire the file and check for an update, till then it
(browsers and proxies/caches) won’t bother server for checking the update.
Так в основном это сказать, если мы будем использовать заголовок Expires/макс возраста, он даже не будет проверять сервер для получения обновленного файла. Поэтому я решил проверить его локально.
Итак, я создал простой файл html, включая 2 файла js и 1 файл изображения. В IIS я установил заголовок Expires на 2 дня для папки с изображениями. Итак, по моему пониманию, после получения файла изображения с сервера один раз, для следующего запроса он не должен отправлять запрос на сервер, чтобы проверить, что файл изображения изменен или нет.
Но каждый раз, когда я обновляю страницу, я вижу запрос, отправленный на сервер, и сервер возвращает статус 304 not modified
. Но согласно спецификациям/блогам, которые я читал, он не должен отправлять запрос на сервер.
Кто-то, пожалуйста, объясните.