location.reload(true) 不再强制从服务器加载,因现代浏览器已废弃该参数,实际效果等同 location.reload();应改用添加时间戳、服务端缓存控制或浏览器硬重载等方式。

使用 location.reload(true) 可以让浏览器绕过缓存,直接向服务器请求最新版本的页面。但要注意:这个方法在现代浏览器中已被忽略,true 参数实际不再起作用。
为什么 reload(true) 不再强制从服务器加载?
早期 Netscape 和 IE 支持 reload(true) 强制刷新(即跳过本地缓存,重新请求所有资源),但后来标准和主流浏览器(Chrome、Firefox、Edge、Safari)都废弃了该行为。现在无论传 true 还是 false,效果完全一样——都按当前页面的 HTTP 缓存策略决定是否发新请求。
真正能强制从服务器重载页面的方法
要确保获取最新 HTML 和资源,需组合以下方式:
-
添加时间戳或随机查询参数:修改 URL 触发全新请求,例如:
window.location.href = window.location.pathname + window.location.search + (window.location.search ? "&" : "?") + "t=" + Date.now(); -
清除关键缓存后刷新:用
fetch或XMLHttpRequest带cache: "no-store"先请求一次当前页面(触发服务端响应头更新),再调用location.reload();不过这不能保证所有资源都更新。 -
服务端配合设置强缓存控制:在响应头中返回
Cache-Control: no-cache, must-revalidate或max-age=0,使浏览器每次都会向服务器验证资源有效性(如带If-None-Match或If-Modified-Since)。
开发调试时更实用的替代方案
日常开发中,不必依赖 JS 刷新逻辑,可直接使用浏览器快捷键或设置:
- Windows/Linux:Ctrl + F5 或 Ctrl + Shift + R(硬性重载,忽略缓存)
- macOS:Cmd + Shift + R 或 Cmd + Option + R
- Chrome DevTools 中勾选 Disable cache(Network 面板右上角齿轮图标)
不推荐但仍存在的兼容写法(仅作了解)
某些旧项目中可能看到如下代码,但它对现代浏览器无效,也不解决资源缓存问题:
location.reload(true); // 实际等价于 location.reload();
如果目标是刷新整个应用(如单页应用热更新失败后兜底),建议改用 window.location.assign(window.location.href) 配合 URL 时间戳,更可控。










