用户如何在浏览器请求上设置无缓存?

Posted

技术标签:

【中文标题】用户如何在浏览器请求上设置无缓存?【英文标题】:How can user set no-cache on browser requests? 【发布时间】:2021-03-16 19:20:31 【问题描述】:

我在某种程度上理解 HTTP(S) 响应 cache-control: headers 和相关的缓存控件,但 request cache-control: headers?用户如何控制自己的请求标头?如果用户使用的是普通浏览器,则他们无法手动调整 URL 本身间接生成的请求参数之外的任何请求参数。

请求缓存控制是怎么回事?它仅适用于以编程方式生成的(curl、wget、javascript)HTTP(S) 请求吗?还是缓存和源之间的交互?

【问题讨论】:

这能回答你的问题吗? Force browser to refresh css, javascript, etc 大多数浏览器并没有为用户提供很多直接控制缓存控制的权限。他们会让你清除任何本地缓存,或请求禁用缓存的页面。链接的问题涵盖了第二种情况;差不多就是这样,不使用浏览器扩展。 没有。您所做的只是清除本地缓存。它不一定会更改请求标头。如果您刷新缓存,浏览器将默认获取最新的材料,因为它没有本地副本并且不需要请求标头、缓存控制:无缓存等。而只是刷新本地缓存不会阻止代理返回其缓存内容而不返回源。那么再一次,请求标头缓存控制指令不是供浏览器用户使用的吗? 【参考方案1】:

大多数浏览器不会为用户提供很多细粒度的缓存控制。他们会让你清除任何本地缓存,这纯粹是本地操作。许多还允许您请求禁用缓存的页面;详情请见Force browser to refresh css, javascript, etc。

举个具体的例子,在 Firefox 中请求页面会发送 headers:

GET /... HTTP/1.1
...

但是,如果我使用“重新加载当前页面”,请求将包含 cache-control 标头以从上游请求未缓存的数据:

GET /... HTTP/1.1
...
Cache-Control: max-age=0
...

对于通过<img src...> 引用的该页面上的资源也是如此。

GET /... HTTP/1.1
...
Accept: image/webp,*/*
...
Cache-Control: max-age=0

正如您所建议的,这不是细粒度的控制;我不知道有任何浏览器允许像选择 max-age 进行常规浏览这样复杂的事情。

但是,它是一般cache-control 标头与浏览器面向用户的功能交互的一个很好的例子。

【讨论】:

以上是关于用户如何在浏览器请求上设置无缓存?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器缓存

web前端缓存机制

浏览器清理缓存怎么清理

在Vue中如何缓存页面

如何解决IE浏览器缓存http请求

nginx静态资源缓存