当客户端通过点击后退按钮进入页面时,如何使其加载新副本而不是缓存副本?

Posted

技术标签:

【中文标题】当客户端通过点击后退按钮进入页面时,如何使其加载新副本而不是缓存副本?【英文标题】:When the client gets to a page by hitting the back button, how to make it load a fresh copy instead of cached one? 【发布时间】:2014-08-26 16:57:20 【问题描述】:

当客户端通过点击后退按钮到达该页面时,我正在尝试获取一个页面以从服务器加载新副本。默认情况下,它会从浏览器内存中加载旧的缓存副本。

有没有办法做到这一点? (在 node.js 中)

window.unload as mentioned here 添加一个空函数对我不起作用。

【问题讨论】:

【参考方案1】:

所有的Meta标签都试过了,都没有效果。但 question 提到 by @BenJ 提到“当您无权访问 Web 服务器的标头时”.. 实际上,我确实可以访问并且可以从服务器端设置任何标头。 于是我挖了out this answer which worked flawlessly

res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
res.header('Expires', '-1');
res.header('Pragma', 'no-cache');

【讨论】:

我用 res.redirect 试过这个 --> 它似乎不适用于 Chrome 版本 61。 router.get('/logout', function (req, res) res.cookie(' jwtToken', '', expires: new Date(0)); res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate'); res.header('Expires ', '-1'); res.header('Pragma', 'no-cache'); res.redirect('/vendor/login'); );【参考方案2】:

您是否尝试在页面的<head> 部分使用这些:

<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />

更新

请参考这个问题:Using <meta> tags to turn off caching in all browsers?

【讨论】:

以上是关于当客户端通过点击后退按钮进入页面时,如何使其加载新副本而不是缓存副本?的主要内容,如果未能解决你的问题,请参考以下文章

点击浏览器后退按钮时如何刷新 ASP .NET MVC 页面

按下后退按钮时强制重新加载/刷新

用户注销时如何使PHP中的页面过期

Android - 如何覆盖“后退”按钮,使其不会完成()我的活动?

Flutter单击后退按钮时如何执行

使用浏览器后退按钮时如何强制重新加载页面?