我尝试了两种不同的方法,但都不起作用:
<强>1。更新 list ,以便浏览器看到更改和更新
这会更新除 JavaScript 文件之外的所有文件。浏览器发现存在差异,下载所有内容(包括 JavaScript 文件)但使用 JavaScript 文件的缓存版本。
<强>2。发送无缓存 header (参见下面的代码)以停止缓存脚本文件
这会导致浏览器抛出错误并且不再缓存任何内容。它说发生了 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>
以上内容使所有浏览器不缓存应用以供离线使用。
有解决办法吗?
最佳答案
我没有足够的观点来判断这是否是最佳实践,但每当我们的团队对 Javascript 进行更改时,我们都会在路径末尾增加一个查询字符串变量。
<script type="text/javascript" src="/path/to/script.js?v=10"></script>
请注意 src 属性末尾的 v=10。这向浏览器暗示正在检索不同的文件,因此绕过了缓存。
我是根据现有同事的做法,采用了这种方法。
关于javascript - list 更新但允许缓存时如何使浏览器更新脚本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32790810/