網頁程式設計之各種狀態管理

很多書沒講! Asp.net網頁各種狀態管理(不得為Null否則報錯)

狀態歸納表

瀏覽器

(前端)

說明

伺服器端

(後端)

說明

Cookie

(可賦予生命週期)

非加密式,容易被發現,僅存在瀏覽器(用戶端),可以給予生命週期。

Application

全域變數,所有人都能共用,同一個記憶體區塊,修改時要鎖定,改完要解鎖。

Html5 Local Storage

儲存在遊覽器(可以跨分頁)

ViewState

如果畫面沒有控制項ViewState不會幫使用者記憶上次的操作,加密式,存在Server 記憶體裡,僅在原頁面。

 

Html5 Session Storage

儲存在遊覽器關掉就沒了

Session

速度快,存在Server 記憶體,閒置時WebServer 會回收,預設20分鐘(IIS Server) Session 相當的安全(國際標準),不管你切換瀏覽器,或是遠端登入無法登入會被伺服器認為是不同的電腦。

 

 (以下記錄簡單的狀態,雖皆能接收,但千萬別把資料庫放進去以免影響資源)

1.  Application[“變數”] =>全域變數,所有人都能共用,修改時要鎖定,改完要解鎖。

application.Lock();

application[aa] = “XXX”;

application.UnLock();

 

實務應用:聊天室、緊急公告

2.Session["變數”] =>速度快,存在Server 記憶體,閒置時WebServer 會回收,預設20分鐘(IIS Server) Session 相當的安全(國際標準),不管你切換瀏覽器,或是遠端登入無法登入會被伺服器認為是不同的電腦。

Session.Abandon()=> 清除網站登出。

Session.clear() =>??

3.ViewState["變數”] =>如果畫面沒有控制項ViewState不會幫使用者記憶上次的操作,加密式,存在Server 記憶體裡,僅在原頁面。

的功能就是保存網頁上所有的資料,好處是當PostBack發生時,資料不會不見,在存Server 端

ViewState[“myid”];

Response.write(ViewState[“myid”]);

 

4.cookie 非加密式,容易被發現,僅存在瀏覽器(用戶端),可以給予生命週期。

Response.Cookies["Login"].Value = "OK";

Response.Cookies["Login"].Expires = DateTime.Now.AddDays(30);

Request.cookie[];

Html5 對應 aspnet 語言

5.Web Storage

Web Storage 有兩種

 

Web Storage 分為兩種:local storage 和 session storage。二者的主要差異在於壽命長短與有效範圍。壽命長短:儲存於 local storage 中的資料,其生命週期較長,session storage 則較短,只要瀏覽器視窗或分頁(tab)關閉就會消失。

 

有效範圍:儲存於 local storage 的資料可以跨瀏覽器分頁(tab),session storage 則不行。

先知道這樣就好,稍後會進一步說明,並且用一個影片來展示它們的差別。

 

設定

window.localStorage.setItem("MyKeyName", "MyDataValue");

window.sessionStorage.setItem("MyKeyName", "MyDataValue")

讀取

var value1 = window.localStorage.getItem("MyKeyName");

var value2 = window.sessionStorage.getItem("MyKeyName");