我尝试了两种不同的方式,但都不起作用:
1。更新清单,以便浏览器看到更改和更新
这将更新除JavaScript文件之外的所有文件。浏览器发现存在差异,下载所有内容(包括JavaScript文件),但使用缓存版本的JavaScript文件。
2。发送无缓存标头(请参阅下面的代码)以停止缓存脚本文件
这会导致浏览器抛出错误而不再缓存任何内容。它说发生了ApplicationCache错误。
无缓存代码:
<filesMatch "\.(js)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
上述内容使所有浏览器不缓存该应用以供离线使用。
有解决方法吗?
答案 0 :(得分:1)
我没有足够的视角来说明这是否是最佳实践,但每当我们的团队进行Javascript更改时,我们会在路径末尾增加一个查询字符串变量。 / p>
<script type="text/javascript" src="/path/to/script.js?v=10"></script>
请注意src属性末尾的 v = 10 。这意味着浏览器正在检索不同的文件,因此会绕过缓存。
我按照现有的同事做法选择了这种方法。