1

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

4

4 回答 4

5

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

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

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

于 2012-07-14T19:24:50.407 回答
4

一个常用的技巧是将文件的缓存设置为持续很长时间,这样就不会再次请求它们。但是,当您希望更新它们时,您可以在问号后的文件名后面附加时间戳。例如:

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

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

于 2012-07-14T19:26:46.180 回答
3

不,没有。

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

于 2012-07-14T19:23:34.797 回答
0

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

于 2012-07-14T19:52:02.010 回答