APPlication,Session和Cookie的區別
方法 |
信息量大小 |
保存時間 |
應用範圍 |
保存位置 |
Application |
任意大小 |
整個應用程序的生命期 |
所有用戶 |
服務器端 |
Session |
小量,簡單的數據 |
用戶活動時間+一段延遲時間(一般為20分鐘) |
單個用戶 |
服務器端 |
Cookie |
小量,簡單的數據 |
可以根據需要設定 |
單個用戶 |
客戶端 |
1.Application對象
Application用於保存所有用戶的公共的數據信息,如果使用Application對象,一個需要考慮的問題是任何寫操作都要在Application_OnStart事件(global.asax)中完成.盡管使用Application.Lock和Applicaiton.Unlock方法來避免寫操作的同步,但是它串行化了對Application對象的請求,當網站訪問量大的時候會產生嚴重的性能瓶頸.因此最好不要用此對象保存大的數據集合
2.Session對象
Session用於保存每個用戶的專用信息.她的生存期是用戶持續請求時間再加上一段時間(一般是20分鐘左右).Session中的信息保存在Web服務器內容中,保存的數據量可大可小.當Session超時或被關閉時將自動釋放保存的數據信息.由於用戶停止使用應用程序後它仍然在內存中保持一段時間,因此使用Session對象使保存用戶數據的方法效率很低.對於小量的數據,使用Session對象保存還是一個不錯的選擇.使用Session對象保存信息的代碼如下:
Session["username"]="zhouhuan";
//讀取數據
string UserName=Session["username"].ToString();
3.Cookie對象
Cookie用於保存客戶瀏覽器請求服務器頁面的請求信息,程序員也可以用它存放非敏感性的用戶信息,信息保存的時間可以根據需要設置.如果沒有設置Cookie失效日期,它們僅保存到關閉瀏覽器程序為止.如果將Cookie對象的Expires屬性設置為Minvalue,則表示Cookie永遠不會過期.Cookie存儲的數據量很受限制,大多數瀏覽器支持最大容量為4096,因此不要用來保存數據集及其他大量數據.由於並非所有的瀏覽器都支持Cookie,並且數據信息是以明文文本的形式保存在客戶端的計算機中,因此最好不要保存敏感的,未加密的數據,否則會影響網站的安全性.使用Cookie對象保存的代碼如下:
Response.Cookies["UserID"].Value="0001";
//讀取信息
string UserID=Response.Cookies["UserID"].Value;
APPlication,Session和Cookie的區別