为什么即使为静态文件设置了Cache-Control / Expires标头,浏览器也不使用缓存?

时间:2018-08-20 14:02:46

标签: http http-headers browser-cache cache-control

我已经在Web服务器上实现了对静态文件(如图像)的缓存。我尝试设置响应标头,例如:

Cache-Control: public, max-age=864000
Expires: Mon, 21 Aug 2018 14:00:00 GMT

这至少将文件缓存一天。但是使用开发人员工具,我可以看到仍在获取请求而不进行缓存。

浏览器似乎发送请求标头,例如:

Cache-Control: no-cache

即使我从Web服务器明确指示不要这样做。

2 个答案:

答案 0 :(得分:1)

在大多数浏览器中,打开开发人员工具后,浏览器实际上会在请求中发送Cache-Control: no-cache作为所谓的“有用功能”,因为您可能正在调试。

默认情况下启用此功能。在FireFox中,此功能可以在设置菜单(使用齿轮图标)的“高级设置”下面列出,其显示方式为:禁用HTTP缓存(打开工具箱时)

取消选中该功能,缓存应该可以正常工作。

答案 1 :(得分:0)

在使用 Visual Studio (例如ASP.net MVC)开发Web应用程序并使用 Chrome 来运行应用程序时,Chrome会始终< / strong>发送标头 private int counter = 0; // global var private int random = 0; // global var final Handler handler = new Handler(); handler.post(r); final Runnable r = new Runnable() { public void run() { //generate random number and do you work random = (int)(Math.random() * 50 + 1); counter++; // call Runnable again after 1 sec if counter <= 3000 (50 min) if (counter <= 3000){ // 3000 = 50min handler.postDelayed(this, 1000); // 1000 = 1 sec } } }; 。无论您是否Cache-Control: no-cache。另外,关闭Disable HTTP Cache也无济于事。

有什么帮助:使用其他浏览器进行调试或启动Chrome的新实例。