您的位置:首页 > Web前端 > CSS

js和css文件自动在后缀处添加版本号(.NET)

2017-11-29 14:20 721 查看

基本用法

为防止浏览器缓存,一般会在js和css文件后添加版本号,但每次手工改将会很麻烦,因此可以考虑将文件修改时间作为版本号,并且自动添加到页面的js和css后缀上。

先写一个获取文件名的公共方法:

public string GetFileTimeStampString(string filePath)
{
FileInfo fi = new FileInfo(Server.MapPath(filePath));
var timeStampString =  fi.LastWriteTime.ToFileTime().ToString();
return timeStampString;
}
然后在aspx的页面中引用js或css的地方加上:

<script src="../Scripts/xxx.js?v=<%Response.Write(GetFileTimeStampString("../Scripts/xxx.js")); %>"></script>
注意,GetFileTimeStampString参数的路径要和前面src的路径一致。

最后页面访问时会自动生成类似以下的内容,v的值会随着文件修改时间不同而不同。

<script src="../Scripts/xxx.js?v=131559771981760542"></script>


扩展用法

1、每次访问页面,都要读一次文件修改时间,这样频繁读取有些不太合理,因此考虑加上缓存,例如:
public string GetFileTimeStampString(string filePath)
{
var obj = DataCache.GetCache(filePath);
if (obj != null)
return obj.ToString();

FileInfo fi = new FileInfo(Server.MapPath(filePath));
var timeStampString =  fi.LastWriteTime.ToFileTime().ToString();

DataCache.SetCache(filePath, timeStampString, DateTime.Now.AddMinutes(10));
return timeStampString;
}
其中DataCache类是自己封装的,代码就不贴了。
这样每10分钟以上才会读一次文件修改时间。
2、版本号加密
使用v=131559771981760542的模式容易被猜到文件更新频次和版本,因此可以考虑将其加密,例如将它进行md5,或者其它hash算法。具体代码不就贴了,大家懂。

如果MVC的网站,可以参考以下文章: http://blog.csdn.net/zx13525079024/article/details/19153495
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: