如何清除浏览器缓存,每次部署新版本的 Web 应用程序时?

4

我有一个React应用程序,每次部署新版本时,由于浏览器缓存,一些用户无法获取新版本。

请问有没有办法在每次部署新版本时清除浏览器缓存呢?


你无法使用JavaScript编程来清除浏览器缓存。然而,还有其他选择。例如,强制浏览器重新获取脚本或CSS文件的常见技术是在链接的末尾附加文件的哈希值或版本号。例如,<script src="MyScript.js?v=1"></script> 在后端,你可以使用HTTP头部来指示浏览器不要缓存响应。 - Kei
请查看以下示例:https://github.com/flexdinesh/cache-busting-example 这里是解释文章:https://dev.to/flexdinesh/cache-busting-a-react-app-22lk - nircraft
1个回答

6

缓存是浏览器向用户提供的一种功能。由于安全原因,您不能使用Javascript清除缓存。

清除缓存意味着您可以操纵用户计算机上的物理文件,如果有一天您可能会这样做,那将是一个巨大的安全漏洞。

查看此答案以加强我所说的内容。

但是,您可以像这样告诉浏览器永不缓存您的页面(也可以查看文档):

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

或者通过将所有文件(JavaScript、图片、字体等)中的哈希标签名称关联起来,并在部署新软件版本时更改该哈希来更改浏览器已知的文件:

<script src="script.js?version={versionNumber}">
<img src ="imageName.png=version={versionNumber}">

1
谢谢Ricardo,我一定会尝试的。 - recruintment
@yusufeliacikk 我希望我能向你请教一些关于这个主题的见解!如果你认为这是正确的答案,请接受它 :D - Ricardo Rocha
根据我的测试,它运行正常,你真棒!谢谢 :) @ricardo-rocha - recruintment

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接