在项目中,前端的Cookies往往存一些用户的登录信息和AutoSuggest(基础信息)的东西。
java获取cookie的方法,如国家简写,Currency的Code等。
但是Cookies的空间是比较小的,多个用户登录一个系统,或者浏览器的cookies被其他应用占用,这时候Cookies的使用就变得很紧张。
html cookie。Solution(解决方法)
1. 可以把项目中的一些信息有HTML5中的LocalStorage来承担部分的Cache工作,减轻Cookies的负担。
Java中cookie保存、因为LocalStorage号称有10MB的空间。相比Cookies的空间大很多。
不同浏览器间 cookie 总大小也不同:
Firefox 和 Safari 允许 cookie 多达 4097 个字节, 包括名(name)、值(value)和等号。
Opera 允许 cookie 多达 4096 个字节, 包括:名(name)、值(value)和等号。
Internet Explorer 允许 cookie 多达 4095 个字节, 包括:名(name)、值(value)和等号。
注:多字节字符计算为两个字节。在所有浏览器中,任何 cookie 大小超过限制都被忽略,且永远不会被设置。
DCS.Common.suggestCookieStore =function(userId,time){
//------------for cookie initialization
var_rsProvider = DCS.Common.getCookieStore(userId,time);
this.userId = userId;
this.KeySeperator ='-.';
this.ItemSeperator ='/.';
varobj = _rsProvider.get(NSConst.Cookie.DCS) || {};
vartmp = obj[this.userId];
obj = {};
obj[this.userId] = tmp;//delete other users cookie
this.dcsObj = obj;
this.store =function(key,obj){
this.clear(key);
varallStr =this.dcsObj[this.userId] ||'';
varstr ='';
if(allStr && allStr !='')
str += this.ItemSeperator;
str += key+this.KeySeperator+_rsProvider.encodeValue(obj);
varlength = str.length;
if((length+DCS.Common.getCookieLength([NSConst.Cookie.DCS])) > 3300)
this.clearLRU();
if((length+DCS.Common.getCookieLength([NSConst.Cookie.DCS])) > 3300)
this.clearLRU();
varallStr =this.dcsObj[this.userId] ||'';
allStr += str;
this.dcsObj[this.userId] = allStr;
_rsProvider.set(NSConst.Cookie.DCS,this.dcsObj);
};
this.clearLRU =function(){
varallStr =this.dcsObj[this.userId];
if(allStr && allStr.length > 2){
varstart = allStr.indexOf(this.ItemSeperator) ;
if(start > 0 && (start+2)
allStr = allStr.substring(start+2);
this.dcsObj[this.userId] = allStr;
_rsProvider.set(NSConst.Cookie.DCS,this.dcsObj);
}
}
};
this.get =function(key){
varallStr =this.dcsObj[this.userId];
if(allStr){
if(allStr.length > (key.length+2) && allStr.indexOf(key+this.KeySeperator) > -1){
varkeyStr = key+this.KeySeperator;
varstart = allStr.indexOf(keyStr);
varkeyLength = keyStr.length;
varend = allStr.indexOf(this.ItemSeperator,start);
if(end
end = allStr.length;
}
varresult = allStr.substring(start+keyLength,end);
return_rsProvider.decodeValue(result);
}
}
returnnull;
};
this.clear =function(key){
varallStr =this.dcsObj[this.userId];
if(allStr){
if(allStr.length > (key.length+2) && allStr.indexOf(key+this.KeySeperator) > -1){
varkeyStr = key+this.KeySeperator;
varstart = allStr.indexOf(keyStr);
varend = allStr.indexOf(this.ItemSeperator,start);
if(end
if(start > 2)
start -= 2; //if not the first item, need clear the sepeartor
allStr = allStr.substring(0,start);
}
else{
allStr = allStr.substring(0,start)+allStr.substring(end+2,allStr.length);
}
this.dcsObj[this.userId] = allStr;
_rsProvider.set(NSConst.Cookie.DCS,this.dcsObj);
}
}
};
this.clearAll=function(){
_rsProvider.clear(NSConst.Cookie.DCS);
}
};
2. 也可以用JS实时监控Cookie的使用情况,万一cookie使用超过预警值,那就要强制清空然后update。
至于怎么实现,项目中有具体的代码。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态