我的工作,它使用会话巨资在网站上。 我们计划在这个网站从迁移framework 2.0
至framework 4.0
。 我们还计划使用HTML5。 因为我们正在重新设计应用程序,我们也在努力减少使用会话,我们可以尽可能多。
一个HTML5的功能是离线存储。 是否可以作为一种替代的地方保存会话数据? 是HTML5离线存储是Asp.Net会议的替代品?
我的工作,它使用会话巨资在网站上。 我们计划在这个网站从迁移framework 2.0
至framework 4.0
。 我们还计划使用HTML5。 因为我们正在重新设计应用程序,我们也在努力减少使用会话,我们可以尽可能多。
一个HTML5的功能是离线存储。 是否可以作为一种替代的地方保存会话数据? 是HTML5离线存储是Asp.Net会议的替代品?
会话数据存储在服务器上,HTML5离线存储是存储在浏览器中。 如果你是在浏览器中存储的舒适会话数据,肯定会工作。 如果您有要在服务器上保留然而,保持在会话的敏感信息。
它当然可以用来作为一种替代的一些会议中,目前使用的东西。
而且它不会对可扩展性的会议有可怕的效果,所以我肯定会说时,你可以,你应该使用它。
相对于使用或不使用它们所有的区别做了一些更与会议中说,可扩展性打击,一旦你使用他们是未成年人,因此,如果您不能完全消除的会议,你可能不会发现它获得你所有的东西。
但是,用于存储客户端状态,这是一个更明智的解决方案(客户端状态是客户端,这听起来几乎是多余的它是如此明智的想法上),所以,单靠它的价值时,你可以这样做。
喜好是你可以存储你的价值观在HTML5存储对象,如sessionStorage的/本地存储,访问Html5的存储文件 ,以获得更多的细节。 使用这个你可以temporaryly /永久存储在本地的中间值,然后访问你的价值观,用于存储会话值
sessionStorage.getItem('label')
sessionStorage.setItem('value', 'label')
或存储值永久地使用
localStorage.getItem('label')
localStorage.setItem('value', 'label')
所以,你需要存储任何会话数据,你可以使用HTML5提供的sessionStorage。
使用新的HTML5 API的是,如果它是由当前用户使用浏览器支持的时候要注意一两件事。 您可以使用库像近代化办特征检测。
将ASPNET会话和本地存储是不等价。 您可以使用本地存储来保持状态,如果这是你的目标。
在过去,我已经通过节约数据,而不是本地存储的基于cookie的方法(安全目标所有的浏览器......用饼干反正)。 也许它可以帮助。 请注意下面的代码需要JSON2 。
var Util = (function () {
return {
// Wrapper module for getting and setting cookies
CookieManager: {
set: function (name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}
else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
},
get: function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
},
erase: function (name) {
this.set(name, "", -1);
}
}
}
})();
var UserPrefs = (function () {
var cookieName = 'UsrPrf';
var data = {};
return {
set: function (propName, value) {
if (data == null) data = {};
data[propName] = value;
},
get: function (propName, defaultValue) {
if (data == null) {
data = {};
return defaultValue;
} else {
return data[propName] == undefined ? defaultValue : data[propName];
}
},
load: function () {
try {
data = JSON.parse(Util.CookieManager.get(cookieName));
} catch (e) {
data = {};
}
return data;
},
save: function (ttl) {
if (!ttl) ttl = 30;
Util.CookieManager.set(cookieName, JSON.stringify(data), ttl);
}
};
})();