有没有办法使用js清除浏览器缓存,至少我的域相关文件?

时间:2012-07-14 19:19:53

标签: javascript html html5

我有一个js文件,css和图像的列表,每次都不需要从服务器加载,但如果文件中有任何更新或错误修复,只有在那段时间我才想从浏览器中替换文件缓存,我知道没有访问浏览器缓存,但有没有其他方法可以这样做?我的应用程序将由特定用户(已知人员)使用,我可以在他们的系统中安装任何程序,任何人都可以建议我这样做的有效方法吗?我不想通过设置'no-cache'每次从服务器加载文件。

4 个答案:

答案 0 :(得分:4)

一个常用的技巧是将文件的缓存设置为持续多年,以便不再请求它们。但是,当您希望更新它们时,可以在问号后面添加时间戳到文件名。 EG:

<link rel="stylesheet" href="style.css?123211212"/>

每次数字更改时,浏览器都会认为它是一个不同的文件,并会重新下载。如果数字没有改变,那么它使用缓存版本。

答案 1 :(得分:3)

不,没有。

Javascript无法访问缓存 - 浏览器不会将此信息公开给javascript引擎。

答案 2 :(得分:3)

强制浏览器在特定时间刷新某些文件的最有效方法是向链接添加任意额外查询字符串:

<script type="text/javascript" src="http://mywebsite.com/js/scripttoload.js"></script>

然后改为:

 <script type="text/javascript" src="http://mywebsite.com/js/scripttoload.js?V=2"></script>

下次请求页面时,浏览器会认为这是一个新文件。标题等有很多其他方法,但这很好用

答案 3 :(得分:0)

作为构建过程的一部分,我所做的是将所有静态引用的文件重命名为涉及其md5哈希的内容。然后我设置标题,以便它们被缓存最长可能的时间。一旦他们改变,他们就会得到一个新名字,所以从来没有问题。