2011-04-21 218 views
4

ASP.NET 4.0多久浏览器缓存(.js文件)存在

如果我更新的网页我的js文件,但它似乎客户端的浏览器不下载新的.js文件(因浏览器缓存?)。什么因素可能会影响旧的.js文件保留在客户端的PC上?有什么办法可以强制客户端下载新的.js文件吗?

编辑: 我还有另外一个问题 - 多长时间浏览器保持.js文件缓存?它是否受客户端浏览器设置控制?

回答

7

一个简单的方法来让浏览器重新下载一个文件是一个查询字符串添加到URL

/myfile.js?v=1 
8

好,您的生产文件没有suposed频繁恰克,尽量把一个版本上您的文件名,像jQuery,一个新版本产生这样的新名称的文件:

/myfile.1.0.0.js 

到:

/myfile.1.0.1.js 
1

一般而言,浏览器会根据请求的确切网址(使用查询参数)缓存来自服务器的响应。当浏览器再次请求完全相同的URL时,将使用缓存的副本。 (当然有缓存策略,但让我们假设简单的场景)

因此,要强制浏览器获取文件的新副本,只需更改该文件的请求的URL。您要么更改文件的名称,要么保留名称,只更改查询参数。

如果您开发的页面,你可以改变它,那么你可以使用页面上创建JavaScript的链接的自动方式

<script type="text/javascript" src="/myfile.js?modified=XXXXX"> 
</script> 

XXXX被programmaticaly设置的DateModified信息蜱myfile.js在每个页面呈现。因此,无论何时修改此文件,输出脚本的链接都会自动更改为新值,并且浏览器将被迫再次下载它。

例如,如果我有一个funcs.js文件,渲染输出会是这样的

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

以后,如果文件被更改,渲染将改变为类似

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

变更修改查询参数将强制浏览器再次下载文件