Клиент продолжает запрашивать событие активов, хотя срок действия Cache-Control не истек - PullRequest
1 голос
/ 09 февраля 2020

У меня есть простой Node-сервер, который устанавливает максимальный возраст Cache-Control на 1200 секунд, и клиент запрашивает изображение. Даже если 1200 секунд не прошло, если я изменил изображение с сервера и обновил sh страницу, изображение будет загружено снова (даже если 1200 секунд не прошло). Предполагается, что он читает из кэша до истечения срока его действия.

Вот заголовок ответа:

enter image description here

Почему это происходит?

1 Ответ

1 голос
/ 09 февраля 2020

Когда вы указали браузеру кэшировать, заголовок ответа содержит валидатор с именем Last-Modified. Когда браузер перезагружается, он может включить это в запрос к серверу в запросе If-Modified-Since при запросе GET или HEAD. Это приведет к тому, что сервер вернет 304, если элемент не изменился.

Таким образом, похоже, что все работает так, как должно. Тот факт, что вы изменили файл, заставил сервер сказать: «Да, этот файл был изменен, поэтому кеш не должен использоваться. Вот последний», потому что значение Last-Modified не будет совпадать.

Если вы хотите избежать этого и полагаться на тайм-аут кэша, даже если файл изменяется, вы можете изменить свой сервер, чтобы убедиться, что значения ETag и Last-Modified никогда не изменятся для этих файлов. Но я бы порекомендовал, чтобы он действовал таким образом и позволил новому файлу изменений занять место в кэше.

См. в этом руководстве для получения более подробной информации.

...