4

我正在学习 http 标头,我想在“缓存控制”字段上运行测试,所以我建立了一个只有默认页面的 asp.net 网站。在这个页面中,我正在测试“缓存控制” " 下面 Page_Load 中带有代码的字段:

Response.AddHeader("Cache-Control","max-age=3600");
Response.Write(new Random().Next(0,9999).ToString());

我认为每次刷新页面时它都会给我相同的数字,因为当页面收到“Cache-Control:max-age = 3600”标头时,页面被浏览器缓存在本地,但令我惊讶的是,它给了我每次按下刷新按钮(不是 ctrl+f5)时都会出现一个新数字,就像缓存控制根本不起作用一样。

我使用提琴手捕获请求/响应信息,并看到请求标头中有一个“Cache-Control:max-age = 0”,而响应标头中有一个“Cache-Control:max-age = 3600”。看起来"Cache-Control: max-age=0" 阻止缓存,但为什么呢?我错过了什么吗?

4

1 回答 1

10

在浏览器中,F5 执行“条件刷新”,它通过条件请求访问服务器(仅当服务器通过 HTTP/304 要求这样做时才使用缓存文件)。要查看缓存标头的效果,请改为打开同一页面的新选项卡。如果您正确配置了所有内容,您将看到相同的值。

在此处了解有关浏览器刷新的更多信息:http: //blogs.msdn.com/b/ieinternals/archive/2010/07/08/technical-information-about-conditional-http-requests-and-the-refresh-button.aspx

于 2012-10-25T22:18:19.623 回答