Don*_*mmy 6 javascript apache html5 caching html5-appcache
我尝试了两种不同的方式,但都不起作用:
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>
Run Code Online (Sandbox Code Playgroud)
以上使得所有浏览器都不会缓存应用程序以供离线使用.
有没有解决的办法?
我没有足够的视角来判断这是否是最佳实践,但每当我们的团队进行 Javascript 更改时,我们都会在路径末尾增加一个查询字符串变量。
<script type="text/javascript" src="/path/to/script.js?v=10"></script>
Run Code Online (Sandbox Code Playgroud)
请注意src 属性末尾的v=10 。这意味着浏览器正在检索不同的文件,因此绕过了缓存。
我根据同事的现有实践采用了这种方法。