使用GruntJS避免浏览器缓存的正确方法

时间:2014-06-05 22:14:07

标签: javascript html caching gruntjs http-caching

我正在尝试找到一种方法来发布新版本的单页面javascript应用,而不会要求客户端在部署新版本时刷新页面或清除缓存

我目前在我的javascript应用程序中加载images / css / js文件,因此它包含scripts/671df76d.main.js之类的引用,这很棒。

所以在我的webapp v0.1 index.html中我有这样的东西:

<script data-main=“scripts/d7ba3e7b.main” src=“bower_components/requirejs/require.js”></script>

在新的v0.2版本中我有这个:

<script data-main=“scripts/671df76d.main” src=“bower_components/requirejs/require.js”></script>

我还尝试了可能影响缓存的元标记。

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

但我从来没有找到一个好的解决方案。有时会显示更新而无需用户手动刷新,有时仍会显示旧内容。让用户看到新内容的唯一方法是让他刷新页面。

由于用户总是通过index.html访问webapp,我注意到有时会选择最新版本(v0.2 with 671df76d.main),但有时在部署后浏览器仍会加载以前的版本版本

我只是想知道如何保证浏览器不会使用旧scripts/d7ba3e7b.main.js缓存我的index.html

浏览器的缓存版本index.html是有意义的,所以它仍然会引用旧的/陈旧的javascript源代码(显然是你不想要的东西)。

从这个意义上讲,你修改资源的事实是无用的。

我是否正确地说,简单地加速index.html内的资源是不够的,还需要一些额外的东西

  • html元标记
  • htaccess文件
  • webserver configs

这样做的正确方法是什么?同样,目标是允许用户查看新版本,而无需让他们刷新/清除缓存。

0 个答案:

没有答案