项目中看到的是这样的引用:
<link href="/css/douban.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery.suggest.js"></script>
<script type="text/javascript" src="/js/douban.js"></script>
上线以后的引用时这样的:
<link href="/css/douban14174.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery5685.js"></script>
<script type="text/javascript" src="/js/jquery.suggest14174.js"></script>
<script type="text/javascript" src="/js/douban14174.js"></script>
有什么工具可以做到这个样子,发布站点的时候处理所有的静态资源给所有的静态资源添加一个后缀,这样以后如果静态资源有变化了,用户浏览的时候直接获取变更后的一个静态文件就可以正常访问站点。
网上搜了很多,也有很多博客解释,但都没有具体详细的说明,网上也看到一个grunt的插件,但是这个不能使用,求大神指点一二。
我的思路:所有静态资源在发布的时候都添加后缀,或者拼接(如:jquery.js?v=1.0.1)。
当js文件或者样式改变以后自动更新版本号。发布完后,用户在打开页面的时候,页面的引用因为版本号不同就需要从新从服务器获取资源就可以了。
我的疑问:目前不知道如何处理在编译的时候给所有的静态资源添加后缀这个问题,没有思路
1.你可以通过后台动态注册,在根据页面的不同生命周期。
2.通过后台提供一个公共属性,判断如果是debugger的话,该属性不存在如果是release的话,把属性赋值。
目前没有这种工具, 这些静态文件一般不会经常改的嘛。。 如果经常改。 只能通过asp.net后台注册资源文件
public static void GetCR(){ HtmlLink link = new HtmlLink(); link.Attributes.Add("type", "text/css"); link.Attributes.Add("rel", "stylesheet"); if(我改了) link.Attributes.Add("href", "/css/douban.css?ver="+DateTime.ToString("hhmmss")); else link.Attributes.Add("href", "/css/douban.css"); this.Header.Controls.Add(link); ...... }
不过真心觉得没什么必要, web服务器伤不起, 能不能不改?
对这种奇葩要求, 要不就自己写个文本文件编辑器, 发布上传之前, 用自己写的编辑工具遍历一遍aspx和html文件, 该改的就改。