javascript - list 更新但允许缓存时如何使浏览器更新脚本文件?

标签 javascript html apache caching html5-appcache

我尝试了两种不同的方法,但都不起作用:

<强>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/

相关文章:

javascript - Preloader在线不淡出

javascript - 我正在尝试安排我的 html/css/jquery,这样我就可以通过双击它来切换 div 的可见性

apache - 阻止代理用户从 12 :30am to 2 am

php - htaccess 如何不重写某些 URL

php - Bootstrap 事件列表/文本对齐

apache - Apache 2.4.6 中的 NameVirtualHost 指令等效?

javascript - 按类对元素进行编号并获取特定 div 的位置

Javascript 代码在 Node 中不起作用?

javascript - 具有过滤表达式的 DynamoDB 扫描表

javascript - 滚动条不可见且 CSS3 过渡在 MOZ 中不起作用