我的应用程序使用托管在子域上的javascript文件,并将其用于跨越许多其他子域的页面。在使用这个js文件的页面中,我已经要求开发人员使用no-cache metas,以便我的结尾的任何更新都反映在这些页面上。以下是他们在页面中使用的标签,
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
参考:https://stackoverflow.com/a/1341133/1787599
这些元标记位于头部标题标记的正下方。当我更新JS文件时,在查看使用该文件的页面时未反映更改。在Chrome开发者工具 - >网络标签中,我只能看到包括JS在内的大多数文件的304(未修改)。虽然这个问题已经回答了很多次,但我仍然无法弄清楚问题出在哪里。
注意:此https://stackoverflow.com/a/11724596/1787599答案正常。在html中使用meta并不重要,.htaccess文件似乎会覆盖它。
答案 0 :(得分:2)
元标记仅适用于html页面,不适用于加载资源。而是使用标头Cache-Control: no-store
响应js文件。
进一步阅读:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Avoiding_caching
请注意,脚本本身必须更新,以便浏览器请求它以及上面的标题。
答案 1 :(得分:0)
编辑文件时,不要忘记在URL末尾添加参数,如下所示:
<script src="myscripts.js?1"></script>
然后,您可以在每次更改时增加数字。
这样您就可以强制更新缓存,并确保每个用户都会加载最新版本。
PD:上面提出的解决方案不是最佳的,因为用户每次加载网站时都会加载文件 - 你正在禁用缓存,缓存非常有用 - 。