location.reload 不像本地那样更新远程服务器上的页面

Posted

技术标签:

【中文标题】location.reload 不像本地那样更新远程服务器上的页面【英文标题】:location.reload not updating page on remote server as it does locally 【发布时间】:2022-01-12 21:06:34 【问题描述】:

我正在尝试在 POST 请求完成后重新加载页面:

window.location.reload();

在我的本地机器上,这是更新页面上的内容,同时在我使用 nginx 的远程服务器上,我必须强制刷新页面。

我试过了:

window.location = window.location
window.location.href = window.location.href
window.location.reload(true);
//reloading with a setTimeout function
//turning off the cache in nginx

【问题讨论】:

【参考方案1】:

默认情况下,您的浏览器可能正在缓存某些远程文件(CSS、JS)。您可以将 Nginx 配置为始终检查是否存在新文件。如果文件未更改,则返回304 Not Modified,或者与新文件一起返回200 OK

## Force browser to check for new JS & CSS files
location ~ .(css|js)$ 
  add_header Cache-Control no-cache;
  etag on;

此外,如果 DevTools 打开,浏览器的重新加载行为可能会受到影响。 Chrome 提供了"Disable Cache" 选项来强制执行新请求

【讨论】:

我尝试了各种在 nginx 中禁用缓存的方法,现在也尝试了建议的方法,但似乎没有成功。 为您的文件提供 Nginx 响应 $ curl -kI https://example.com/my_file.js 脚本实际上在html模板中

以上是关于location.reload 不像本地那样更新远程服务器上的页面的主要内容,如果未能解决你的问题,请参考以下文章

js的location.reload(true)

为啥代客共享不像本地代客那样在请求中添加斜线

在本地新建一个分支后,推送到远端

window.location.reload(false);window.location.reload(true);history.Go区别

loaction.reload(false)和location.reload(true)

为啥我在js里面用window.location.reload(true);不刷新页面?