避免缓存,为所有css、js加版本号
来源:互联网 发布:大数据经典书籍 编辑:程序博客网 时间:2024/05/11 14:35
近日遇到有客户反应,页面打开显示不正常,不能完全的显示出页面。细问之下才得知,原来是有一个js文件修改了一个方法,但是上线后由于浏览器缓存的原因,还是加载的旧js文件,导致页面显示不正常了。给客户解释由于系统更新,需要强制刷新才可以。这天陆续又有客户反映遇到此问题,而有些客户由于对电脑了解的少,你说强制刷新他也不知怎么操作。思考是不是由网站自己解决此问题。先是考虑在页面引用的js文件后面加随机数来解决,但是考虑到该js文件引用频繁,如果每次都请求服务器,对服务器压力比较大,考虑着用版本号的方式在引用的时候实现,这样每次js文件有改变就更改版本号。如果js文件不改变,由于请求的还是原地址,这样就会从本地浏览器缓存中读取,而不会增加服务器负担。
效果图:
html:
<body>
<div class="banxin">
<textarea id="fileInput"></textarea>
<div class="btnBox"><input id="num" type="" class="vertical_center" name=""><button class="vertical_center">增加版本号</button></div>
<textarea id="fileOutput"></textarea>
</div>
</body>
js:
<script type="text/javascript">
$(function(){
var fileInput=$("#fileInput");
var fileOutput=$("#fileOutput");
var scr="script";
var num=$("#num");
$("button").on("click",function(){
var scriptStr="";
var cssStr="";
var fileInputText=fileInput.val().replace(/^\s+|\s+$/gm,'');
var scrArry=fileInputText.split("src");
var cssArry=fileInputText.split("href");
var newscrArry=[];
var newcssArry=[];
$.each(scrArry,function(index,ele){
if(ele.charAt(0)=="="){
newscrArry.push(ele.split('"')[1]);
}
});
$.each(cssArry,function(index,ele){
if(ele.charAt(0)=="="){
newcssArry.push(ele.split('"')[1]);
}
});
newscrArry=unique(newscrArry);
newcssArry=unique(newcssArry);
$.each(newscrArry,function(index,ele){
scriptStr+='<script type="text/javascript" src="'+ele+'?'+num.val()+'"></'+scr+'>'+ '\n';
});
$.each(newcssArry,function(index,ele){
cssStr+='<link rel="stylesheet" type="text/css" href="'+ele+'?'+num.val()+'"/>'+ '\n';
})
fileOutput.val(cssStr+scriptStr);
})
})
//数组去重
function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
}
</script>
- 避免缓存,为所有css、js加版本号
- 使用maven 自动为 js/css加版本号
- js 和css 加版本号问题
- 部署项目避免本地js、css缓存
- 引入JS和CSS文件加版本号的作用
- css 引入js引入后面加?545等等参数是为防止浏览器缓存
- HTML中css和js链接中的版本号(刷新缓存)
- HTML中css和js链接中的版本号【.htaccess 缓存】
- 为js和css文件自动添加版本号
- 怎么避免浏览器缓存静态文件(js/css/img)
- CSS JS 添加版本号
- 引入js文件加版本号
- 加时间戳使js,css不缓存
- gulpfile.js自动化解决js、css缓存问题(添加版本号)
- 引用js或css后加?v= 版本号的用法
- 引用js或css后加?v= 版本号的用法
- 在js或css后加?v= 版本号的用法
- 引用js或css后加?v= 版本号的用法
- 单例学习---内部类方法
- Session 会话
- Mysql数据库命令导出导入存储过程函数
- struts2有没有办法在服务端得到请求action的名称?
- 笨办法17更多文件操作
- 避免缓存,为所有css、js加版本号
- dos 设置环境变量
- Android 编译系统二
- Conversion Functions
- Python教程之六-----输入和输出
- TotoiseSVN的基本使用方法
- 最小二乘法(一般形式和矩阵形式)
- android中使用html作布局文件
- ERROR: org.hibernate.util.JDBCExceptionReporter