浏览器缓存(.js文件)存在多长时间?

4

ASP.NET 4.0

如果我在页面中更新了.js文件,但客户端的浏览器似乎没有下载新的.js文件(由于浏览器缓存?)。有哪些因素会影响旧的.js文件仍留在客户端电脑上?有没有办法强制客户端下载新的.js文件?

编辑: 我还有一个问题——浏览器会将.js缓存保留多长时间?这是否受客户端浏览器设置的控制?

3个回答

8

好的,您的生产文件不应频繁更改,尝试在文件名中加入版本号,例如jQuery,新版本会生成一个新的文件名,就像这样:

/myfile.1.0.0.js

to:

/myfile.1.0.1.js

7

让浏览器重新下载文件的简单方法是在url上添加查询字符串。

/myfile.js?v=1

1
通常,浏览器会根据请求的确切URL(包括查询参数)缓存来自服务器的响应。当浏览器再次请求完全相同的URL时,将使用缓存副本。(当然有缓存策略,但让我们假设简单情况)
因此,要强制浏览器获取文件的新副本,您只需要更改该文件的请求URL。您可以更改文件的名称,或者保留名称,仅更改查询参数。
如果您开发页面并且可以更改它,则可以使用自动方式在页面上创建JavaScript链接。
<script type="text/javascript" src="/myfile.js?modified=XXXXX">
</script>

其中XXXX是在每个页面呈现时以编程方式设置为myfile.js的DateModified信息的刻度。因此,每当此文件被修改时,输出脚本的链接会自动更改为新值,并强制浏览器重新下载它。

例如,如果我有一个funcs.js文件,则呈现的输出将类似于:

<script type="text/javascript" src="/funcs.js?modified=43253452352342">
</script>

后来,如果文件被更改,则呈现将会变成类似于:

<script type="text/javascript" src="/funcs.js?modified=43253456789678">
</script>

修改后的修改过的查询参数将强制浏览器重新下载文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接