2012-08-07 9 views
1

저는 세션을 많이 사용하는 웹 사이트에서 일하고 있습니다. 이 웹 사이트를 framework 2.0에서 framework 4.0으로 마이그레이션 할 계획입니다. 우리는 또한 HTML5를 사용할 계획입니다. 우리는 응용 프로그램을 다시 설계하고 있으므로 가능한 한 세션 사용을 줄이기 위해 노력하고 있습니다.HTML5 오프라인 저장 용량 - 세션의 대안?

HTML5의 기능 중 하나는 오프라인 저장소입니다. 세션 데이터를 저장하는 대체 장소로 사용할 수 있습니까? HTML5 오프라인 저장소가 Asp.Net 세션 대신 사용할 수 있습니까?

답변

3

세션 데이터가 서버에 저장되고 HTML5 오프라인 저장소가 브라우저에 저장됩니다. 브라우저에 세션 데이터를 저장하는 것이 편한 경우 제대로 작동하는지 확인하십시오. 그러나 서버에 남아 있어야하는 중요한 정보가있는 경우 세션에 보관하십시오.

1

안녕하세요. 예를 들어 sessionStorage/localStorage와 같은 html5 저장 객체에 값을 저장할 수 있습니다. 자세한 내용은 Html5 Storage Doc을 참조하십시오. 이 사용하는 당신은 temporaryly/영구적으로 로컬 중간 값을 저장하고 다음 영구적으로

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

를 사용하여 세션

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

또는 값을 저장 값을 저장하기 위해 당신의 가치 에 액세스 그래서 당신이 필요한 모든 세션 데이터 store를 사용하면 html5에서 제공하는 sessionStorage를 사용할 수 있습니다.

2

에 대한 대체로 사용할 수 있습니다. 현재 세션에 사용되는 항목 중 일부는입니다.

그리고 세션에있는 확장성에 끔찍한 영향을 미치지 않으므로 가능한 경우 사용하는 것이 좋습니다.

그렇다면 일단 세션을 사용하면 세션을 조금 더 확장하는 것이 세션 사용에있어 전혀 다른 사용법과 비교할 때 약간의 차이가 있기 때문에 세션을 완전히 제거 할 수 없다면 그것이 당신을 그렇게 많이 얻은 것을 알지 못합니다.

그러나 클라이언트 상태를 저장하는 데 훨씬 더 합리적인 해결책입니다 (클라이언트 상태는 클라이언트에 있으며, 거의 중복되는 소리가 들리므로 현명한 아이디어입니다). 그렇게하면 혼자만해도할만한 가치가 있습니다.

1

최신 HTML5 API를 사용할 때주의해야 할 점은 사용자가 현재 사용중인 브라우저에서 지원되는지 여부입니다. Modernizer과 같은 라이브러리를 사용하여 기능을 감지 할 수 있습니다.

Aspnet 세션과 로컬 저장소가 같지 않습니다. 로컬 저장소를 사용하여 목표가 유지되면 상태를 유지 관리 할 수 ​​있습니다.

과거에는 로컬 저장소 대신 데이터를 저장하는 쿠키 기반 방식을 채택했습니다. 어쨌든 쿠키가 포함 된 모든 브라우저를 안전하게 타겟팅하기 위해. 어쩌면 도움이 될지도 모른다. 아래 코드는 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