Заголовки Http max-age не кешируются, когда меняются accept-encoding
Я пытаюсь сделать статические файлы для кэширования в браузере в течение небольшого промежутка времени (10 секунд). Кажется, он работает правильно при обновлении страницы. - 200, если вы новичок - 200 подается из кеша, если вы выполняете мягкое обновление в течение первых 10 секунд, - 304, если вы приходите через более 10 секунд.
Всякий раз, когда я добавляю заголовок Http "Vary": "Accept-Encoding", он перестает работать, а это означает, что кеш браузера больше не работает (я всегда обращаюсь к серверу). Это происходит из-за того, что запрос Http перестает отправлять if-Modified-Since или if-none-match всякий раз, когда я добавляю заголовок Http "Vary".
Работают ли совместно с управлением кешем и различными версиями?
Я оставляю Http Request and Response, если кто-то может предложить какое-то решение:
Request Header
accept:*/*
accept-encoding:gzip, deflate, sdch
accept-language:en-US,en;q=0.8
cache-control:max-age=0
cookie:XXXXX
referer:XXXXXXXXX
user-agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36
Response Header
cache-control:max-age=10
content-encoding:gzip
content-type:application/javascript
date:Wed, 13 Apr 2016 12:34:57 GMT
etag:W/"XXXXXXXXXXXXXX"
last-modified:Wed, 13 Apr 2016 12:34:25 GMT
server:nginx/1.9.14
status:200
vary:Accept-Encoding
x-powered-by:Express
В Express у меня есть эта конфигурация для установки заголовков ответов для статических файлов:
var setHeaders = function(res, path)
{
res.setHeader('Cache-Control', 'max-age=10');
res.vary('Accept-Encoding');
};
app.use('/static', express.static('./app/static', {setHeaders: setHeaders}));
1 ответ
У меня была проблема с сертификатом. Кажется, это было причиной проблемы. Без изменения заголовка все, кажется, работает должным образом, даже если сертификат не был установлен. Несмотря на это, при использовании заголовка var возникали проблемы с кешем.
Установка собственного сертификата заставила его работать.
Решение пришло: почему браузер не отправляет заголовок "If-None-Match"?