如何阻止 chrome 缓存
Posted
技术标签:
【中文标题】如何阻止 chrome 缓存【英文标题】:How to stop chrome from caching 【发布时间】:2011-05-08 00:05:54 【问题描述】:当用户按下后退按钮时,我需要强制浏览器从服务器重新加载上一页。
我已将以下内容添加到我的响应标头中:
Cache-Control: no-cache, must-revalidate
Expires: -1
这似乎适用于大多数浏览器,但不适用于坚持返回缓存结果的谷歌浏览器。
那么有谁知道当用户按下后退按钮时我如何强制浏览器从服务器获取页面?
谢谢。
【问题讨论】:
如果您对停止缓存字段内容感兴趣,请查看this! 9000 次观看,模组称之为“非常狭窄的情况”。 【参考方案1】:根据 chromium repo 中的this bug report,用户发现使用 no-store 而不是 no-cache 将在 chrome 中修复它。
【讨论】:
但是其他浏览器呢。添加这个会破坏其他浏览器吗? 我假设如果你同时使用这两种情况,你应该涵盖这两种情况。 IE。无存储,无缓存,必须重新验证 在我使用带有我编写的插件的 WordPress wp-admin 的情况下,我无法让它触发正确的标题来解决这个问题。解决方法是我让我的 CSS 文件添加了一个 '?time=' 。 time() 最后。看,在我的例子中,我正在让我的 CSS 加载一个生成图像的 php 文件,并且在我在 CSS URL 的末尾添加时间参数之前,它没有运行该图像的 PHP 代码。【参考方案2】:这是不正确的,但也许您可以使用 javascript 历史对象来确定当前页面是否是列表中的最后一页?如果没有,则按下返回按钮。
请参阅此参考:http://www.exforsys.com/tutorials/javascript/javascript-history-object-properties-and-methods.html
当然,真正的解决方案是以这样一种方式构建您的应用程序,即后退/前进按钮的使用实际上按照它们应该的方式工作。
【讨论】:
除非别无选择,否则我不会很高兴实现这个,这对我来说有点hacky。问题是当用户按下返回时页面重新加载是返回按钮应该工作的方式。例如,如果我正在使用网上银行并且我已经注销,我不希望人们回击并查看我的帐户详细信息。我希望页面重新加载。我们的应用程序也遇到了类似的情况,信息可能已更改,因此我们需要动态重新加载。 是的,它是hackish,我不推荐它,除非它是你唯一的选择。这只是我想到的。但是,您应该记住这些前进和后退按钮的用途。网站最初是用于文档/页面,而不是应用程序。虽然按照 superfro 的建议添加no-store
是个好主意,但您还应该建议您的用户在注销后关闭浏览器,就像任何其他银行或安全网站一样。
抱歉,这听起来很突然。感谢您的建议,如果我找不到更好的解决方案,我会使用它以上是关于如何阻止 chrome 缓存的主要内容,如果未能解决你的问题,请参考以下文章