【问题标题】:HTTP Header Cache-Control on Android does not seem to workAndroid 上的 HTTP Header Cache-Control 似乎不起作用
【发布时间】:2023-04-05 16:22:01
【问题描述】:

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

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

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

我将 HTTP 标头“Cache-Control”与“no-cache”作为值,但这并没有做任何事情。 我在 WildFly 前面使用了 NGINX,但我检查了 NGINX 并没有过滤掉那个标头。

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

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

感谢任何帮助或 cmets!

【问题讨论】:

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


    【解决方案1】:

    如果通过“Cache-Control”清理cache 以某种方式失败,另一种解决方案是为JavaScript 文件设置新版本。例如:

    <script type="text/javascript" src="script.js?v=0.01"> // any version number you want
    

    我不太习惯WildFly Server,但我相信您可以设置一个function 来创建一个随机数,该随机数将在每次刷新页面时用作新版本。

    类似:&lt;script type="text/javascript" src="script.js?v={random number here}"&gt;

    希望能给你指明方向。

    【讨论】:

    • 您好,感谢您的帮助。我忘了提到我已经这样做了。在 Wildfly 中确实有一个非常简单的方法可以做到这一点,我很快就会在问题中发布它。但是,它没有帮助。有人告诉我,在 Safari 上也是如此,但仅在移动设备上。会不会是某种数据保存的东西?
    • 是的,可以。我不知道 Wildfly,但我知道它通过其他平台发生。
    【解决方案2】:

    这最终成为了时间问题。 手机上的浏览器最终会重新加载当前文件,从那时起更改立即可见。

    带有版本号的脚本技巧就像一个魅力。标题也是如此(“Cache-Control:no-cache”)。两者一起可能非常安全。不能只用版本号来做这一切,只有包含。

    感谢@Azametzin 的意见!

    【讨论】:

      【解决方案3】:

      在 Android 设备(不是 Chrome Android)的某些浏览器中,并非所有浏览器都支持缓存控制,因为缓存控制仍然适用于 android 设备。部分安卓浏览器无法使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-09
        • 2014-01-16
        • 1970-01-01
        • 2011-07-27
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多