angular,require ,oclazyload项目如何加入版本控制

具体github项目地址

一个项目从上线了以后再维护,客户端由于有缓存报错了,这是了尴尬的时刻,因为他们不懂怎么清理缓存,这时候就要进行访问的时候就要进行强制刷新了,

例如引入的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'
})

 

posted @ 2017-04-02 16:07  莺哥  阅读(497)  评论(0编辑  收藏  举报