Android上的HTTP标头缓存控制似乎不起作用

时间:2019-08-14 01:36:53

标签: google-chrome wildfly browser-cache cache-control

我完全迷路了,甚至不知道要去谷歌搜索什么,也许有人可以在这里向正确的方向推我:

我正在运行WildFly Server,并对JavaScript文件进行了一些更改。 将新的.war文件重新发布到服务器后,由新js文件引起的更改就可以在计算机上的浏览器中看到。

但是,当我打开手机检查那里的结果时,什么也没发生。我清除了缓存,当然,现在出现了更改。在计算机和手机上,我都在使用Chrome。

我将HTTP标头“ Cache-Control”以“ no-cache”作为值,但这没有任何作用。 我在WildFly的前面使用了NGINX,但是我检查了一下,NGINX并未过滤掉该标头。

我也尝试过对文件进行版本控制。 WildFly为此提供了一个非常简洁的解决方案,如果您偶然发现了这个问题,请查看this post来看看如何完成。但这对我也没有帮助。

有人知道这里会发生什么吗?

感谢您的帮助或评论!

3 个答案:

答案 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 的浏览器无法运行。

相关问题