Заголовки 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"?

Другие вопросы по тегам