2012-08-07 102 views
1

我正在使用Session的網站上工作。我們計劃將此網站從framework 2.0遷移到framework 4.0。我們也計劃使用HTML5。由於我們正在重新設計應用程序,因此我們也儘可能地減少Session的使用。HTML5離線存儲 - 會話的替代?

HTML5的功能之一是離線存儲。它可以作爲另一個地方來保存會話數據嗎? HTML5離線存儲是否替代Asp.Net會話?

回答

3

會話數據存儲在服務器上,HTML5離線存儲存儲在瀏覽器中。如果你很喜歡在瀏覽器中存儲會話數據,那麼肯定會有效。如果您的敏感信息應保留在服務器上,請將其保留在會話中。

1

嗨,是的,你可以存儲你的值在HTML5存儲對象,如sessionStorage/localStorage,請訪問 Html5 Storage Doc以獲得更多詳細信息。使用這個你可以temporaryly /永久存儲在本地的中間值,然後永久使用

localStorage.getItem('label') 
localStorage.setItem('value', 'label') 

訪問你的價值觀 用於存儲會話

sessionStorage.getItem('label') 
sessionStorage.setItem('value', 'label') 

或存儲值的值,這樣,你需要的任何會話數據存儲,你可以使用html5提供的sessionStorage。

2

它當然可以用作的一些替代東西會話當前用於。

而且它對會話的可伸縮性沒有可怕的影響,所以我肯定會說你應該在可用時使用它。也就是說,一旦你使用它們,會話的可擴展性就會比使用或不使用它們的區別要小,因此如果你不能完全消除會話,你可能會沒有發現它讓你獲得了很多。

但是,對於存儲客戶端狀態,這是一個更合理的解決方案(客戶端狀態在客戶端上,這聽起來幾乎是多餘的,這是一個非常明智的想法),所以對於這一點,只要有可能,就值得做。

1

使用較新的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); 
     } 
    }; 
})(); 
+0

偉大的實用功能,但由於我的目標是HTML5,我會堅持localStorage。 – Asdfg 2012-08-07 16:03:27