如何停止Chrome浏览器缓存

41

我需要强制浏览器在用户按下“返回”按钮时重新加载之前的页面。

我已将以下内容添加到我的响应标头中:

Cache-Control: no-cache, must-revalidate
Expires: -1

这对大多数浏览器似乎有效,但对于坚持返回缓存结果的Google Chrome则无效。

那么,有人知道如何在用户按下后退按钮时强制浏览器从服务器获取页面吗?

谢谢。


1
如果您对停止缓存字段内容感兴趣,请查看此链接:https://dev59.com/WXE85IYBdhLWcg3wmEtW#2699400! - user669677
4
这段话的意思是:有9000个人看到了这个情况,但版主们认为这是一个非常狭窄的情况。我可以将其翻译为: "9000 views and the mods call this "an extraordinarily narrow situation"." -> "这个情况被浏览了9000次,但版主们认为这是一个异常狭窄的情况。" - AaronLS
2个回答

36
根据chromium代码库中这个bug报告的说法,用户发现在chrome浏览器中使用no-store而非no-cache可以修复该问题。

但是其他浏览器呢?添加这个会破坏其他浏览器吗? - Craig Norton
我认为如果你同时使用两者,应该涵盖两种情况。即 no-store、no-cache 和 must-revalidate。 - superfro
在我的WordPress wp-admin中,我用自己写的插件,但是我无法触发正确的标题以解决这个问题。解决方法是在我的CSS文件末尾添加'?Time='. Time()。因为在我的情况下,我让CSS加载生成图像的PHP文件,但直到我在CSS URL的末尾添加时间参数之前,它才不会运行该图像的PHP代码。 - Volomike

0

4
除非别无选择,否则我对实施此方法并不太满意,因为它有点不专业。问题在于,当用户按下返回按钮时,页面会重新加载,这正是返回按钮应该起到的作用。例如,如果我正在进行在线银行操作并已注销登录,我不希望人们按下返回按钮后看到我的账户详细信息。我希望页面重新加载。我们的应用程序也面临着类似的情况,信息可能已经发生变化,因此我们需要动态重新加载。 - Craig Norton
是的,这是一种非常hack的方法,除非这是你唯一的选择,否则我不建议使用。这只是我想到的一个办法。但是,你应该记住前进和后退按钮的作用。网站最初是用于文档/页面的,而不是用于应用程序的。虽然像superfro建议的添加“no-store”是一个好主意,但你还应该建议用户在注销后关闭浏览器,就像其他银行或安全站点一样。 - Brad
抱歉听起来有点突兀。我感谢你的建议,如果我找不到更好的解决方案,我会采纳它。 - Craig Norton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接