1. 程式人生 > >Application, Session, Cookie, Viewstate, Cache物件用法和區別

Application, Session, Cookie, Viewstate, Cache物件用法和區別

 

================================================================================

        1.Application:用於儲存所有使用者共用的資料資訊。 在Asp.Net中類似的配置資料最好儲存在Web.config檔案中。如果使用Application物件,一個需要考慮的問題是任何寫操作都要在 Application_OnStart事件(global.asax)中完成。儘管使用Application.Lock和 Application.Unlock方法來避免寫操作的同步,但是它序列化了Application物件的請求,當網站訪問量大的時候會產生嚴重的效能 瓶頸。因此最好不要用此物件儲存大的資料集。

使用如下:
//存放資訊
Application["UserNameID"]="1000";
//讀取資訊
String NameID=Application["UserNameID"].ToString();


2.Session:用於儲存每個使用者的專用資訊。Session中的資訊儲存在Web伺服器的記憶體中,儲存的資料量可大可小。當Session超時或被關閉時將自動釋放儲存的資料資訊。對於小量的資料Session物件儲存還是一個不錯的選擇。

使用如下:
//存放資訊
Session["UserNameID"]="1000";
//讀取資訊
String NameID=Session["UserNameID"].ToString();


3.Cookie: 用於儲存客戶瀏覽器請求伺服器頁面的請求資訊,其有效期可以人為設定,而且其儲存的資料量很受限制,因此不要儲存資料集及其他大量資料。而且Cookie以明文方式將資料資訊儲存在客戶端的計算機中,因此最好不要儲存敏感的未加密的資料。

使用如下:
//存放資訊
Response.Cookie["UserNameID"].Value="1000";
//讀取資訊
String NameID=Response.Cookie["UserNameID"].Value;


4.ViewState: 常用於儲存單個使用者的狀態資訊,可以儲存大量的資料但是過多使用會影響應用程式的效能。所有Web伺服器控制元件都使用ViewStat在頁面回發期間儲存自 己的狀態資訊。每個控制元件都有自己的ViewState,不用時最好關閉以節省資源。通過給@Page指令新增"EnableViewState= false"屬性可以禁止整個頁面的ViewState。

使用如下:
//存取資訊
ViewState["UserNameID"]="1000";
//讀取資訊
string NameID=ViewState["UserNameID"].ToString();


5.Cache:用於在Http請求間儲存頁面和資料。它允許將頻繁訪問的大量伺服器資源儲存在記憶體中,當用戶發出相同的請求時伺服器不再次處理而是將Cache中儲存的資訊返回給使用者,節省了伺服器處理請求時間。

使用如下
//存放資訊
Cache["UserNameID"]="1000";
//存放資訊
Cache.Insert("UserNameID","1000");
//讀取資訊
String UserNameID=Cache["UserNameID"].ToString();


6.隱藏域:Hidden控制元件屬於Html型別的伺服器控制元件,可以實現隱藏域的功能,他和其他的空間沒什麼區別只是不會在瀏覽器上顯示,始終處於隱藏狀態。

使用如下:
//存放資訊
Hidden.Value="1000";
//讀取資訊
String UserNameID=Hidden.Value;


7.查詢字串:將傳遞的值連線在URL後面,然後通過Response.Redirect方法實現客戶端的重定向。

使用如下
Response.Redirect("User.aspx?UserNameID=10000&LevelD=100");
執行上面的語句後在IE位址列顯示的URL的程式碼如下:
http://localhost/User.aspx?UserNameID=1000&LevelID=100
當跳轉到User.aspx後,可以通過下面程式碼獲得傳遞的資訊:
String UserNameID,LevelD;
UserNameID=Request.Params["UserNameID"];
LevelD=Request["LevelD"];

================================================================================

Application

1.Application用來儲存所有使用者共用的資訊

2.在Asp時代,如果要儲存的資料在應用程式生存期內不會或者很少發生改變,那麼使用Application是理想的選擇。但是在Asp.net開發環境中我們把類似的配置資料放在Web.config中。

3.如果要使用Application 要注意的是所有的寫操作都要在Application_OnStart事件中完成(global.Asax),儘管可以使用Application.Lock()避免了衝突,但是它序列化了對Application的請求,會產生嚴重的效能瓶頸。

4.不要使用Application儲存大資料量資訊

5.程式碼:Application[“UserID”]=”test”;

        String UserName=Application[“UserID”].ToString();

Session

1.Session用來儲存每一個使用者的專有資訊

2.Session的生存期是使用者持續請求時間加上一段時間(一般是20分鐘左右)

3.Session資訊是儲存在Web伺服器記憶體中的,儲存資料量可大可小

4.Session超時或者被關閉將自動釋放資料資訊

5.由於使用者停止使用應用程式之後它仍在記憶體中存留一段時間,因此這種方法效率較低

6.程式碼:Session[“UserID”]=”test”;

        String UserName=Session[“UserID”].ToString();

Cookie

1.Cookie用來儲存客戶瀏覽器請求伺服器頁面的請求資訊

2.我們可以存放非敏感的使用者資訊,儲存時間可以根據需要設定

3.如果沒有設定Cookie失效日期,它的生命週期儲存到關閉瀏覽器為止

4.Cookie物件的Expires屬性設定為MinValue表示永不過期

5.Cookie儲存的資料量受限制,大多數的瀏覽器為4K因此不要存放大資料

6.由於並非所有的瀏覽器都支援Cookie,資料將以明文的形式儲存在客戶端

7.程式碼:Resopnse.Cookies[“UserID”]=”test”;

        String UserName= Resopnse.Cookies [“UserID”].ToString();

ViewState

1.ViewState用來儲存使用者的狀態資訊,有效期等於頁面的生命週期

2.可以儲存大量資料但是要慎用,因為會影響程式效能

3.所有的Web伺服器控制元件都是用ViewState在頁面PostBack期間儲存狀態

4.不需要則關閉 @page 裡面設定EnableViewState=false

5.程式碼:ViewState[”ID”]=”cc”;
   String ID =ViewState[“ID”].ToString();

Cache

1.Cache用於在Http請求期間儲存頁面或者資料

2.Cache的使用可以大大的提高整個應用程式的效率

3.它允許將頻繁訪問的伺服器資源儲存在記憶體中,當用戶發出相同的請求後
伺服器不是再次處理而是將Cache中儲存的資料直接返回給使用者

4.可以看出Cache節省的是時間—伺服器處理時間

5.Cache例項是每一個應用程式專有的,其生命週期==該應用程式週期
應用程式重啟將重新建立其例項

6.注意:如果要使用快取的清理、到期管理、依賴項等功能必須使用Insert 或者Add方法方法新增資訊

7.程式碼:Cache[”ID”]=”cc”;或者Cache.Insert(“ID”,”test”);
   String ID =Cache[“ID”].ToString();

Hidden

1.Hidden控制元件屬於Html型別的伺服器控制元件,始終處於隱藏狀態

2.每一次提交的時候它會和其他伺服器控制元件一起提交到伺服器端

3.程式碼如下:Hidden.Value=”cc”;
string id=Hidden.Value; 要使用Runat=server

相關推薦

Application, Session, Cookie, Viewstate, Cache物件用法區別

  ================================================================================         1.Application:用於儲存所有使用者共用的資料資訊。 在Asp.Net中類似的配置資

Asp.net中Application Session Cookie ViewState Cache Hidden 區別

在ASP.NET中,有很多種儲存資訊的物件。例如:Application,Session,Cookie,ViewState和Cache等,那麼它們有什麼區別呢?每一種物件應用的環境是什麼? 為了更清楚的瞭解,我們總結出每一種物件應用的具體環境,如下表所示: 方法資訊量大小儲

[區別]APPlication,Session,Cookie,ViewStateCache

bcf 百度 red 搬家 view color app 發布 ati 原文發布時間為:2009-08-01 —— 來源於本人的百度文章 [由搬家工具導入]在ASP.NET中,有很多

淺談JS中的!=、== 、!==、===的用法區別 JS中Null與Undefined的區別 讀取XML文件 獲取路徑的方式 C#中CookieSessionApplication用法區別? c#反射 抽象工廠

main 收集 data- 時間設置 oba ase pdo 簡單工廠模式 1.0 var num = 1; var str = ‘1‘; var test = 1; test == num //true 相同類型 相同值 te

Redis+Django(Session,CookieCache)的用戶系統

set fpm types hiredis uil structure orm 基於 .net 轉自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authen

Java IO操作——物件序列化(Serializable介面、ObjectOutputStream、以及與Externalizable介面的用法區別

學習目標 掌握物件序列化的作用。 掌握Serializable介面的作用。 可以使用ObjectOutputStream進行物件的序列化操作。 可以使用ObjectInputStream進行物件的反序

腳本引用中使用deferasync用法區別

兩個 不依賴 doc 體驗 html 中文 htm 停止 其他 是的,就是在頁面腳本引用的時候設置defer或者async,為什麽會有這兩個屬相來輔助腳本加載那,因為瀏覽器在遇到script標簽的時候,文檔的解析會停止,不再構建document,有時打開一個網頁上會出現空

oracle_not existsnot in的用法區別

沒有 class oracl 水果 where tle select mark 顯示 (轉 飛翔-方向 積累 沈澱http://www.cnblogs.com/mytechblog/) sql中exists,not exists的用法 exists表示()內子查詢語句返回結

【JS點滴】substringsubstr以及slicesplice的用法區別

[0 相等 交換 top subst char ima cas 負數 那麽就由一道筆試題引入吧,已知有字符串a=”get-element-by-id”,寫一個function將其轉化成駝峰表示法”getElementById”; var a = "get-element-

C#中DBNull.ValueNull的用法區別

span 不存在 sdn null art beautiful 插入 類型 實例化 DBNull.Value,, 是適用於向數據庫的表中插入空值。而 null,是指在程序中表示空引用。 或者對象為空。就是沒有實例化。 row[column]的值為DBNull.Value的話

HashMap、HashTable、LinkedHashMapTreeMap用法區別

strong style 取出 能力 順序 ron public ons 保存 Java為數據結構中的映射定義了一個接口java.util.Map,它有四個實現類,分別是HashMap、HashTable、LinkedHashMap和TreeMap。本節實例主要介紹這4中實

python全局變量-局部變量用法區別

python全局變量 python局部變量 全局和局部變量區別 對於很多初學的同學,對全局和局部變量容易混淆,看看下面給大家的講解相信都應該明白 兩者的區別了。 定義:全局變量:在模塊內、在所有函數的外面、在class外面局部變量:在函數內、在class的方法內 下面來看看例子函數內部調用全局變量

CSS之px、em、rem、pt的用法區別

分辨 計算機系統 字符 css dpi logs pre 國外 12px px:一個虛擬長度單位,是計算機系統的數字化圖像長度單位,換算成物理長度,需要制定經度DPI。Windows系統默認是96dpi,Apple系統默認是72dpi。 一個相對長度單位,像素px是相對

for,foreach,iterator的用法區別

mar 有序 iter 這就是 內部類 易懂 叠代 object clas 不同點: 1.形式差別 for的形式是 for(int i=0;i<arr.size();i++){...} foreach的形式是 for(int i:arr){...} iterator的

Oracle中的rownum rowid的用法區別

hashcode 去重 pre weight row 動態 自己 log gpo 1.rownum是偽列,是在獲取查詢結果集後再加上去的 (獲取一條記錄加一個rownum)。對符合條件的結果添加一個從1開始的序列號。 eg: select rownum,phon

nginx的location配置root、alias用法區別

必須 del 實例 解釋 一個 clas 指定 不同的 否則 root & alias區別root與alias主要區別在於nginx如何解釋location後面的uri,這會使兩者分別以不同的方式將請求映射到服務器文件上root的處理結果是:root路徑+loca

SQL關於INEXISTS的用法區別的比較

就是 註意 子查詢 post 如果 需要 nbsp style loop 1.exist,not exist一般都是與子查詢一起使用. In可以與子查詢一起使用,也可以直接in (a,b.....)。2.exist會針對子查詢的表使用索引. not exist會對主子查詢都

關於BeanUtils.copyProperties()用法區別

body utils apache gpo nbsp cati oid 用法 row  這兩個類在不同的包下面,而這兩個類的copyProperties()方法裏面傳遞的參數賦值是相反的。   例如:  a,b為對象  BeanUtils.copyProperties(a,

Python 內置函數raw_input()input()用法區別

標準 換行 字符串 輸入 我們 print raw_input http bsp 我們知道python接受輸入的raw_input()和input() ,在python3 輸入raw_input() 去掉樂,只要用input() 輸入,input 可以接收一個Pyt

Python Pandas DataFrame:查詢數據or選擇數據(selection)之loc,iloc,at,iat,ix的用法區別

with 基於 important 常用 復合 bool 入行 com 取數據 在操作DataFrame時,肯定會經常用到loc,iloc,at等函數,各個函數看起來差不多,但是還是有很多區別的,我們一起來看下吧。 首先,還是列出一個我們用的DataFrame,註意inde