有些浏览器会缓存js和css文件,除非您强制刷新,否则无法刷新它们。最简单的方法是什么?
我刚刚实现了这个似乎有效的解决方案。
在页面上声明一个版本变量
public string version { get; set; }
从web.config密钥中获取版本号
version = ConfigurationManager.AppSettings["versionNumber"];
在aspx页面中调用javascript和样式表,如下所示
<script src="scripts/myjavascript.js?v=<%=version %>" type="text/javascript"></script>
<link href="styles/mystyle.css?v=<%=version %>" rel="stylesheet" type="text/css" />
因此,如果您在web.config中设置version = 1.1,从1.0开始,您的浏览器将下载最新的文件,这有望为您和您的用户节省一些麻烦。
有没有其他更好的解决方案,或者这会给网站带来任何不可预见的问题?
发布于 2010-02-03 00:53:16
您的解决方案起作用了。事实上,它相当受欢迎。
即使是Stack Overflow也使用类似的方法:
<link rel="stylesheet" href="http://sstatic.net/so/all.css?v=6184">
其中v=6184
可能是SVN修订号。
发布于 2015-02-27 01:20:39
如果您为JS/ ASP.NET使用包,CSS将为您处理此问题。它会自动以GUID的形式附加一个版本号到你的包中,并且只在包被更新时更新这个GUID (也就是任何源文件都有变化)。
如果您有大量的JS/CSS文件,这也会有所帮助,因为它可以极大地缩短内容加载时间!
发布于 2018-07-26 22:39:23
我想要一个简单的一行来使路径唯一,以破坏缓存。这对我很有效:
<script src="scripts/main.js?bust_js_cache=<%=System.IO.File.GetLastWriteTime(Server.MapPath("scripts/main.js")).ToString("HH:mm:ss")%>" type="text/javascript"></script>
如果文件自上次加载到页面以来已被修改,则浏览器将提取更新后的文件。
它从.js
文件生成last modified
戳记,并将其放入其中,而不是放入可能不易访问的版本中。
<script src="scripts/main.js?bust_js_cache=10:18:38" type="text/javascript"></script>
另一种选择是获取文件的校验和。
https://stackoverflow.com/questions/2185872
复制相似问题