我完全迷路了,甚至不知道要去谷歌搜索什么,也许有人可以在这里向正确的方向推我:
我正在运行WildFly Server,并对JavaScript文件进行了一些更改。 将新的.war文件重新发布到服务器后,由新js文件引起的更改就可以在计算机上的浏览器中看到。
但是,当我打开手机检查那里的结果时,什么也没发生。我清除了缓存,当然,现在出现了更改。在计算机和手机上,我都在使用Chrome。
我将HTTP标头“ Cache-Control”以“ no-cache”作为值,但这没有任何作用。 我在WildFly的前面使用了NGINX,但是我检查了一下,NGINX并未过滤掉该标头。
我也尝试过对文件进行版本控制。 WildFly为此提供了一个非常简洁的解决方案,如果您偶然发现了这个问题,请查看this post来看看如何完成。但这对我也没有帮助。
有人知道这里会发生什么吗?
感谢您的帮助或评论!
答案 0 :(得分:3)
最终成为时间问题。 手机上的浏览器最终重新加载了当前文件,从那以后更改立即可见。
带有版本号的脚本技巧就像一个超级按钮。标头也是如此(“ Cache-Control:no-cache”)。两者都可能很安全。用版本号不能全部完成,只能用包含的版本。
感谢@Azametzin的帮助!
答案 1 :(得分:2)
如果通过“ cache
”进行的Cache-Control
清除失败,则另一种解决方案是为JavaScript
文件设置新版本。例如:
<script type="text/javascript" src="script.js?v=0.01"> // any version number you want
我不太习惯WildFly Server
,但我相信您可以设置function
来创建一个随机数,该随机数将在每次刷新页面时用作新版本。
类似<script type="text/javascript" src="script.js?v={random number here}">
希望它会为您提供指导。
答案 2 :(得分:0)
并非所有的浏览器都支持缓存控制在 Android 设备中的某些浏览器(不是 Chrome Android),因为缓存控制在 android 设备中仍然有效。某些来自 Android 的浏览器无法运行。