Чтобы получить фон, у меня есть очень большой файл js, который динамически загружается в тег скрипта. время от времени клиент изменяет файл. Если изменений нет, перезагрузка не требуется.
Итак, я просмотрел много статей о стековом потоке, касающихся must-revalidate.
Исходя из этого, я реализовал заголовки кэша, чтобы они выглядели так:
Cache-Control: must-revalidate,max-age=0
У меня также включен ETag.
Из того, что я прочитал и понял, это должно проверять изменения и загружать, только если есть какие-либо изменения
Проблема заключается в том, что как в Firefox, так и в Chrome файл загружается независимо от того, есть изменения или нет. т.е. даже когда файл и Etag не изменены, браузер НЕ загружается из кеша.
Что происходит в этом случае?
Я что-то здесь не так делаю?
я должен установить длинный maxage, когда я использую must-revalidate вместо maxage, установленного в ноль?
Я редактирую этот вопрос, потому что нашел что-то важное во время дальнейшей проверки. пожалуйста, прочитайте ниже, прежде чем отправлять ответ.
Похоже, что описанная выше проблема возникает только на динамически загружаемых ресурсах.
, например:
если у меня есть тег сценария на странице источника
<script src="some-js.js" type="text/javascript">
это касается обязательных повторных проверок заголовков кэша. и не перезагружается, если нет изменений.
однако, если тег scritp загружается динамически (вставьте мой код для загрузки тега динамического скрипта ниже)
var s = document.createElement('script');
s.setAttribute('src', 'newjs.js');
s.setAttribute('id', 'script1');
s.type = 'text/javascript';
s.async = false;
s.onerror = errorcallback;
s.onload = loadcallback;
document.body.appendChild(s);
этот js всегда перезагружается независимо от заголовка кэша.
Есть идеи, почему это происходит?