ASP.NET 4.0
如果我在页面中更新了我的.js文件,但似乎客户端的浏览器没有下载新的.js文件(由于浏览器缓存?)。哪些因素可能会影响旧的.js文件保留在客户端的PC上?有没有办法强制客户端下载新的.js文件?
修改 我还有另一个问题 - 浏览器保留.js缓存多长时间?它是否受客户端浏览器设置控制?
答案 0 :(得分:8)
好吧,你的生产文件不经常出现问题,尝试在你的文件名上添加一个版本,比如jquery,新版本会生成一个新名称的文件:
/myfile.1.0.0.js
为:
/myfile.1.0.1.js
答案 1 :(得分:7)
让浏览器再次下载文件的一种简单方法是在网址上添加查询字符串
/myfile.js?v=1
答案 2 :(得分:1)
通常,浏览器会根据请求的确切网址(使用查询参数)缓存来自服务器的响应。当浏览器再次请求完全相同的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>
更改后的已修改查询参数将强制浏览器再次下载文件