如何防止 Web 浏览器对缓存文件发出“If-Modified-Since”请求?

Posted

技术标签:

【中文标题】如何防止 Web 浏览器对缓存文件发出“If-Modified-Since”请求?【英文标题】:How can I prevent web browsers from making "If-Modified-Since" requests for cached files? 【发布时间】:2016-02-25 20:19:24 【问题描述】:

我正在尝试在 nginx 中设置缓存,以便不需要重复获取图像。除了浏览器仍在为每个带有If-Modified-Since 标头的文件发出请求之外,它似乎正在工作。然后服务器以304 Not Modified 响应,实际文件不会再次传输。我可以看到在很多情况下这是多么理想的行为,但在我的特殊情况下,文件最多可以过期一周,我更愿意跳过额外请求带来的延迟。

是否可以添加缓存标头,告诉浏览器始终自动使用缓存版本,直到到期?我当前的 nginx 配置是

expires 7d;
add_header Pragma public;
add_header Cache-Control "public";

【问题讨论】:

【参考方案1】:

从更多的研究来看,这些请求似乎是由浏览器自行决定的,并且与 nginx 配置没有任何关系。如果您在 Chrome 中执行 ctrl-f5 刷新,那么它将重新请求所有文件,无论它们是否被缓存。如果您只执行 f5 ,那么它将发送带有“If-Modified-Since”标头的请求,然后仅在文件已更改时才更新文件(这就是我正在做的事情)。当您只需单击页面链接时,不会请求缓存文件。

【讨论】:

以上是关于如何防止 Web 浏览器对缓存文件发出“If-Modified-Since”请求?的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS:如何防止浏览器缓存静态文件?

sass构建CSS时,如何给文件随机加版本号,以防止老文件缓存?

防止 Web 应用程序在域白名单之外发出 HTTP 请求 [重复]

如何强制 window.location 发出 HTTP 请求而不是使用缓存?

fetch(),如何发出非缓存请求?

图解HTTP缓存