js 有清除缓存的方法么

2022-04-28 18:24:24 +08:00
 helee9199

医院项目 项目有时修改到 js 后 替换到生产环境 有时有效 有时无效 清理缓存后则会好 但又不太好每次都让 user 清理缓存,他们也不一定会 所以有办法 清理缓存的方法么 目前想的是写到到登录入口 登录成功后就清理缓存 保证每次登录后是没有缓存的

5429 次点击
所在节点    程序员
78 条回复
zingwu
2022-04-28 18:27:04 +08:00
我们用的 umi ,每次更新打包完 hash 值变了会刷新
scukmh
2022-04-28 18:27:56 +08:00
3dwelcome
2022-04-28 18:31:23 +08:00
这个 JS 没生效,一般都是服务器没有配置好。JS 没过期,自然是不会重新下载一次的。

可以参考一下我以前的发帖,/t/830203
WeiYuanStudio
2022-04-28 18:31:32 +08:00
打包 hash 后缀可解
helee9199
2022-04-28 18:36:39 +08:00
@3dwelcome emm 因为项目比较老,我们更新项目的方式还比较传统. 量大的时候就给完整包
不涉及后台 jar 的时候.就单独给差异进行替换
所以没有具体的某个页面去清缓存
目前就希望每次登录的时候整个项目清缓存
不知道那些清缓存插件是怎么实现的
希望有个接口 调一下就能实现
yunying
2022-04-28 18:43:51 +08:00
让用户浏览器安装插件跟让用户手动清楚缓存没什么区别,治标不治本。还是得对前段所有静态资源做缓存管理,根据开发成本和场景,可前后端都做或者单做其中一端看看能不能解决
oneisall8955
2022-04-28 18:59:54 +08:00
<a href="javascript:alert('清除成功');">清除缓存</a>
helee9199
2022-04-28 19:01:47 +08:00
@yunying
老项目 老技术 不知道有什么方案可以解决
可以说点关键字我搜索下么?
elevioux
2022-04-28 19:03:42 +08:00
js 地址加版本号?
helee9199
2022-04-28 19:06:08 +08:00
@elevioux 这个情况之能解决一个页面呀 ,项目那么多页面 都有引乱七八糟的 js 啥的 不太好实现
目前只求能一次性清理项目页面缓存
hgc81538
2022-04-28 19:13:56 +08:00
script_1.js?<script_1.js 在文件系統的最後修改 unixtime>
script_2.js?<script_2.js 在文件系統的最後修改 unixtime>

e.g. script_1.js?1651144341
bearice
2022-04-28 19:16:57 +08:00
难道不能干脆不缓存么?反正是内部访问,那点儿量也不至于说不缓存就能咋样。
helee9199
2022-04-28 19:24:12 +08:00
@bearice 怎样不缓存呢
就是想不缓存
比如有个 bug 我改了 js 我们目前是把这个 js 拿去替换文件
结果护士发现 没生效, 然后一沟通教他清缓存 ,然后就好了
但是这不是个办法, 所以才想说如何清缓存 或者不缓存.
bearice
2022-04-28 19:25:01 +08:00
helloet
2022-04-28 20:28:10 +08:00
响应头 Cache-Control: no-store
ClericPy
2022-04-28 21:50:59 +08:00
别折腾 no-cache

比较简单的方案前面提到了, js cdn 刷新了以后, 带冗余参数 ?v=xxxx, 这里的 xxxx 一般不用时间戳, 就用 js 计算出来的 md5 就行了. 不过后端得跟着一起发版...

话说缓存这东西不是走 etag 的么
Xhack
2022-04-28 21:51:49 +08:00
alter("缓存清楚成功")
ClericPy
2022-04-28 21:53:03 +08:00
@ClericPy 上面说错, 后端不一定要发版, 前后端隔离 HTML 也是前端项目的话就没事了

虽然还是习惯 etag 什么的
Yamdr
2022-04-28 21:56:15 +08:00
<script src="xxx.js?v=7"></script>
Yamdr
2022-04-28 21:57:04 +08:00
<script src="xxx.js"></script>

加上一个版本号
<script src="xxx.js?ver=数字"></script>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/849873

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX