摘要:Session、Catch、Cookie、ViewState、 簡略說明
Session
資料存放在伺服器端,安全性高,缺點為佔用伺服器的記憶體資源(每一連線便佔用一份記憶體空間),連線結束時會自動刪除。
建議程式中隨時將不用的 Session 釋放掉,以免造成伺服器記憶體的負擔。
使用方式:session("變數名稱")=變數值
Session.clear() 清空 session 物件內所有資料 。
Session.Remove() 移除 session 的某一個變數 。
Session.RemoveAll() 移除 session 的所有變數 。
Session.Abandon() 移除 session 的所有變數 。
RemoveAll 與Abondon 不同在於,Session.Abondon 會觸發 Session_End 事件。
Session.TimeOut = 20 設定Session的 TimeOut時間。
Application
用途:不同使用者之間(不同連線)共用某些系統變數,例如:網頁瀏覽次數。
資料存放在伺服器端,會佔用伺服器系統資源。
當IIS或網頁伺服器重新啟動、修改Global.asax、修改 web.config時, Application的值便會遺失。
使用方式:application("變數名稱")=變數值
Q:因為該變數是共用,所以會有互相搶用的問題,所以在修改該值時都應該先 Lock。
Application.Lock() → Application("count")+=1 → Application.UnLock()
Cookie
將資料存在使用者的電腦中,大多瀏覽器限制檔案大小不得超過 4096 Bytes,每個網站最多存放20個 Cookie。
通常用來記錄使用者名稱、帳號、上次到訪時間......等等。
使用方式:Response.Cookies("變數名稱").Value=變數值
設定 Cookie 有效期限 Response.Cookies("變數名稱").Expires=Now.AddDays(180) '180天後到期
限制:同一網域名稱的網頁才能存取該網站所儲存的 cookies
因為資料是存在使用者的電腦中,傳送時是以明碼方式傳送,機密資料不建議以此方式儲存。
ViewState
<input type="hidden" name="__VIEWSTATE" value="dDwtMjQxNTQ2Nzt0PH
沒錯!所謂的 ViewState 值就是以 Hidden 的方式儲存在使用者端。
使用方式:application("變數名稱")=變數值
好處:ViewState 的記憶體是用使用者端,且無像 Cookie 這樣的大小限制,所以可以將資料庫撈出來的結果存放於 ViewState 中,
這樣一來 PostBack 時便不需要再次重撈資料庫。
缺點:因為 ViewState 值是用隱藏欄位來傳送,所以當存放大量資料時,會導致網頁內容變大,造成載入速度變慢。
ViewState 是以 Base64 為編碼,並非真正加密,對於有心人士仍是有辦法破解,機密性資料不建議存放於此。
msdn資料: http://msdn.microsoft.com/zh-tw/library/50x35554(v=VS.80).aspx
Session資料:http://msdn.microsoft.com/zh-tw/library/87069683(v=vs.80).aspx