改变accept-encoding

时间:2016-04-13 12:51:10

标签: caching http-headers cache-control vary

我试图在浏览器中缓存静态文件一小段时间(10秒)。刷新页面时似乎正常工作。   - 如果你是新人,请200   - 如果您在前10秒内进行软刷新,则从缓存中提供200个   - 如果你来的时间超过10秒,则为304。

每当我添加Http标头&#39; Vary&#39;&#39; Accept-Encoding&#39; 时,它就会停止工作,这意味着浏览器缓存不再起作用(< strong>我总是点击服务器)。这是因为每当我添加Http标头时, Http请求就会停止发送if-modified-since或if-none-match

缓存控制和兼容性是否可以协同工作?

我留下了Http请求和响应,以防有人提出一些解决方案:

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 个答案:

答案 0 :(得分:0)

我有自我证书问题。它似乎导致了这个问题。如果没有标题变化,即使未安装证书,一切似乎也能正常工作。尽管如此,当使用vary头时,问题出现在缓存中。

安装自我证书使其正常工作。

解决方案来自:Why browser does not send "If-None-Match" header?