我正在使用Session的網站上工作。我們計劃將此網站從framework 2.0
遷移到framework 4.0
。我們也計劃使用HTML5。由於我們正在重新設計應用程序,因此我們也儘可能地減少Session的使用。HTML5離線存儲 - 會話的替代?
HTML5的功能之一是離線存儲。它可以作爲另一個地方來保存會話數據嗎? HTML5離線存儲是否替代Asp.Net會話?
我正在使用Session的網站上工作。我們計劃將此網站從framework 2.0
遷移到framework 4.0
。我們也計劃使用HTML5。由於我們正在重新設計應用程序,因此我們也儘可能地減少Session的使用。HTML5離線存儲 - 會話的替代?
HTML5的功能之一是離線存儲。它可以作爲另一個地方來保存會話數據嗎? HTML5離線存儲是否替代Asp.Net會話?
會話數據存儲在服務器上,HTML5離線存儲存儲在瀏覽器中。如果你很喜歡在瀏覽器中存儲會話數據,那麼肯定會有效。如果您的敏感信息應保留在服務器上,請將其保留在會話中。
嗨,是的,你可以存儲你的值在HTML5存儲對象,如sessionStorage/localStorage,請訪問 Html5 Storage Doc以獲得更多詳細信息。使用這個你可以temporaryly /永久存儲在本地的中間值,然後永久使用
localStorage.getItem('label')
localStorage.setItem('value', 'label')
訪問你的價值觀 用於存儲會話
sessionStorage.getItem('label')
sessionStorage.setItem('value', 'label')
或存儲值的值,這樣,你需要的任何會話數據存儲,你可以使用html5提供的sessionStorage。
它當然可以用作的一些替代東西會話當前用於。
而且它對會話的可伸縮性沒有可怕的影響,所以我肯定會說你應該在可用時使用它。也就是說,一旦你使用它們,會話的可擴展性就會比使用或不使用它們的區別要小,因此如果你不能完全消除會話,你可能會沒有發現它讓你獲得了很多。
但是,對於存儲客戶端狀態,這是一個更合理的解決方案(客戶端狀態在客戶端上,這聽起來幾乎是多餘的,這是一個非常明智的想法),所以對於這一點,只要有可能,就值得做。
使用較新的HTML5 api的時候需要注意的一件事是,它是否支持用戶當前使用的瀏覽器。您可以使用像Modernizer這樣的庫來執行功能檢測。
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);
}
};
})();
偉大的實用功能,但由於我的目標是HTML5,我會堅持localStorage。 – Asdfg 2012-08-07 16:03:27