angular,require ,oclazyload项目如何加入版本控制
一个项目从上线了以后再维护,客户端由于有缓存报错了,这是了尴尬的时刻,因为他们不懂怎么清理缓存,这时候就要进行访问的时候就要进行强制刷新了,
例如引入的css文件为
<link rel="stylesheet" href="style.css">
这样在服务端更新加入代码了,如何使客户端强制刷新
简单粗暴的是直接改css名字,显然这是不科学的,改到自己都词穷。
这时候我们可以用版本就行控制
<link rel="stylesheet" href="style.css?v=1-0-0">
这样可以强制刷新了
注意你的css名字还是叫style.css只是你引入的时候加了?v=1-0-0
当你下次再稍微该这个文件时,你的 可能就是?v=1-0-1
grunt中有加入版本控制的方法,可以进行研究,后续我也会进行学习,到时候把只是分享到这里
言归正传,require.js怎么加入版本号
把reuirejs下面的代码
return config.urlArgs && !/^blob\:/.test(url) ? url + config.urlArgs(moduleName, url) : url;
替换为
if (!config.urlArgs) { return url; } if (typeof config.urlArgs === 'string') { return url + ((url.indexOf('?') === -1 ? '?' : '&') + config.urlArgs); } //handle the urlArgs with a function //give each file it's own urlArgs if (isFunction(config.urlArgs)) { var urlArgs; try { urlArgs = config.urlArgs.call(config, moduleName, url); } catch (e) { urlArgs = ""; } return url + ((url.indexOf('?') === -1 ? '?' : '&') + urlArgs); }
https://github.com/xingkongwuyu/zhihu/blob/master/js/lib/require.js 可以参考这个
配置怎么配置呢?这样
<script type="text/javascript" src="require.js" data-main="main"></script>
require.config({ //你的配置+ urlArgs:'v=1-9-2' })