为什么即使为静态文件设置了缓存控制/过期标头,浏览器也不使用缓存?



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

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

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

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

Cache-Control: no-cache

即使我从我的网络服务器明确指示它不要这样做。

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

默认情况下,此功能处于启用状态。在FireFox中,此功能可以在设置菜单中的"高级设置"下方找到(使用齿轮图标(,如下所示:禁用HTTP缓存(当工具箱打开时(

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

当您使用Visual Studio(例如 ASP.net MVC(开发 Web 应用程序并使用 Chrome 运行应用程序时,Chrome始终发送标头Cache-Control: no-cache。不管你是否Disable HTTP Cache.关闭Developer Tools也无济于事。

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

最新更新