【问题标题】:How to hard reload/refresh a page using javascript如何使用 javascript 硬重新加载/刷新页面
【发布时间】:2021-11-16 09:39:21
【问题描述】:

我们如何使用 Javascript 在 Chrome 中进行硬重新加载/刷新?

window.location.reload(true);
location.reload(true);

不是为我做的。

============================

我所说的“不是为我做的……”是什么意思

会话 cookie(例如 JSESSIONID)没有特别更新 HttpOnly 的。

我想要实现的目标...'

  1. 我想像第一次访问该 URL 一样重新加载页面。
  2. 我想模拟下面的步骤(这就像第一次访问 URL)
   - Open browser
   - Type URL
   - Hit Enter

我想知道是否有更强大的 Javascript 命令可以像第一次一样重新加载 。

【问题讨论】:

  • 无法复制。您使用的是哪个版本的 Chrome?
  • 我们需要更多细节。你是怎么测试这个的? stackoverflow.com/questions/2099201/…
  • 该参数已弃用,如果您尝试清除缓存,则应考虑在资产 url 上使用缓存破坏变量,因此如果文件更改,参数也会更改,这将导致文件重新加载,即版本您的文件或使用像 workbox 这样的服务人员
  • 我添加了更多细节。希望你明白我的意思。

标签: javascript google-chrome reload page-refresh


【解决方案1】:

location.reload() 应该可以工作。 Works for me!

【讨论】:

  • location.reload() 只是重新加载当前页面。它不执行硬重新加载。在现在过时的 location.reload 方法中,您可以传入 true,这将执行硬重新加载。但是,它们现在当然已经过时了。
  • @The_Paradox,我试过了,但它没有像第一次访问 URL 那样重新加载页面
【解决方案2】:

确保页面被硬重新加载的最佳(实际上也是唯一的)方法是使用您的服务器。您可以做到这一点的一种方法是在请求页面时提供标头,使资源无效,例如Cache-Control,这将告诉浏览器不要缓存资源并始终重新验证资源,这意味着每次都必须重新下载所有内容。

不过,我不建议在生产应用程序中的每个请求上都提供此标头。

Cache-Control: no-store, max-age=0

在您的页面上,您可以添加meta 标记,该标记将告诉浏览器该做什么,前提是没有已将标头传递给浏览器。这取决于您提供内容的方式,但您可以将以下内容添加到您的 head 元素中,这将告诉浏览器绝对不存储任何内容,相当于第一次点击页面:

<head>
...
<meta http-equiv="Cache-Control" content="no-store, max-age=0">
...
</head>

【讨论】:

  • 尽量不要去服务器端
  • 手动,我可以关闭浏览器,重新打开,然后再次访问相同的 URL,然后刷新会话 cookie。我真的想在 Javascript 中实现这一目标
  • 喜欢@Marcus Parsons 为您的答案投票,但正如您所见,我还不能投票。也许我的问题具有误导性,但我上面的评论实际上是我想要实现的目标
  • 不能投票也没关系。我在您编辑后重新阅读了您的问题,我相信我编辑的答案应该可以帮助您。尝试将该元素添加到文档的head。但是您的里程可能非常重要,因为元标记结果取决于您的内容如何提供给最终用户。
  • 我在 SI 团队中,所以我没有将事情传回服务器端的奢侈。我只是用我在前端收到的东西做我能做的。
猜你喜欢
  • 1970-01-01
  • 2011-12-14
  • 2012-03-06
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多