運行結果:html
2.Session是保存在服務器端的用戶變量。我能夠在一個頁面中對Session進行值,而後在另外一個頁面裏訪問它。數據庫
Session的附值方法以下:
瀏覽器
2.Application緩存
解釋:若是數據應在多個客戶端共享,就可使用應用程序狀態來保存。應用程序狀態的使用方式跟Session很是類似。對於應用程序狀態,應使用HttpApplication類,經過Page類的Application屬性就能夠訪問它。服務器
一般Application能夠用來統計訪問網站的人數,在啓動Web應用程序時,初始化應用程序變量userCount。 Application_Start()是global.asax文件中的時間處理程序方法,在啓動網站的第一個Asp.Net頁面時調用該方法。cookie
在Application_Start()事件處理程序中,應用程序變量userCount的值會遞增。在改變應用程序變量以前,應用程序對象必須用Lock() 方法鎖定,不然會出現線程問題,由於多個用戶能夠同時訪問一個應用程序變量。在改變了應用程序變量的值後,還必須調用Unlock()方法。注意鎖定和解 鎖時間的時間比較短,在此時間段內,不該讀文件或數據庫中的數據。不然,其餘用戶就必須等到數據訪問完成以後才能操做。session
運行結果:app
注意:不要在應用程序狀態中存儲太多的數據,由於應用程序狀態須要服務器資源,直到服務器中止或重啓以後,纔會釋放這些資源。框架
3.Cache佈局
使用Cache類的優勢是當緩存的數據發生變化時,Cache類會讓數據失效,並實現緩存數據的從新添加,而後通知應用程序,報告緩存的及時更新。
1.經常使用的方法
建立cache
在DotNet環境下經過Cache.Insert(string key,object o)方法建立。
其中key 表明cache的ID,o表明存到cache裏的對象。
Add: 將數據添加到Cache對象
Insert: 向Cache中插入數據項,可用於修改已經存在的數據緩存項
銷燬cache
經過方法Cache.Remove(string key)
其中key 表明cache的 ID.
調用cache
Cache支持裝箱/拆箱操做。如你能夠把一個DataSet對象ds經過Cache.Insert(「dsCache」,ds)的方式存到Cache中,能夠經過拆箱操做 DataSet ds = (DataSet)Cache[「dsCache」]來訪問它。
獲取數據
Get:從Cache對象中獲取指定的數據項,注意返回的是Object類型,須要進行類型轉換
GetType:從Cache對象中獲取數據項的類型,判斷數據類型後,方便進行轉換
GetEnumerator
循環訪問Cache對象中的緩存數據項。注意其返回類型是「IDictionaryEnumerator」
下面的代碼演示瞭如何應用Cache類的這些方法。在使用本代碼時須要注意,代碼中使用了Arraylist對象,因此須要添加對命名空間「System.Collections」的引用,同時使用Cache類別忘記了添加命名空間
技巧:在使用GetType方法時,若是要判斷類型,須要使用Object.GetType().Name屬性獲取類型的名稱。
運行結果:
其中在讀取類型爲ArrayList的數據時,因爲沒有進行類型轉換,因此取出的是類型爲「System.Collections.ArrayList」的對象。
2.何時用cache
Cache 通常用於數據較固定,用的較頻繁的地方。例如能夠把進銷存系統中能夠把產品信息存入cache,在用戶調用產品信息時經過調用cache便可,這樣從很大 程度上減小了用戶與數據庫的交互,提升了系統的性能。反之,cache不適合用在數據變更快,使用範圍很窄的地方。例如把一個具體採購單存入 cache中。
3.cache 調用注意事項
Cache是有時間限制的。超過了服務器設置的過時時間,就會被服務器回收。當cache被回收後對應的內存塊就會被清空,再次經過cache[「cachekey」]訪問對象時返回的就是null值。因此如下這種調用就會出現異常
4.緩存功能
典型應用:實現數據的緩存快速讀取功能
本例的目的是將目錄列表填充到下拉框中,當緩存失效後,目錄列表的內容爲空。演示的步驟以下所述。
在5秒之內若是單擊按鈕,則正常顯示目錄列表,若是超過5秒,則緩存對象已經不存在,因此下拉列表框的內容爲空。
4. Viewstate
1、ViewState的原理
1.瀏覽器請求Default.aspx頁面
2.在服務器端 發現建立的ViewState 這個時候 會自動建立一個名字叫作__VIEWSTATE(雙下滑線 所有是大寫)的隱藏域 其隱藏域的值通過base64加密之後返回到瀏覽器端這一加密過程在頁面生命週期的SaveState事件中的SaveAllState方法中完成
3.當瀏覽器提交表單的時候 將__VIEWSTATE的隱藏域也一塊兒提交到服務端 這個時候 頁面生命週期的ReadState事件
的ReadAllState方法會將加密後的值反base64解密 最後將值賦值給名字叫作name的ViewState
4.最後來操做ViewState中的值
2、ViewState的用法:
1.定義ViewState屬性
public int PageCount{
get{return (int)ViewState["PageCount"];}
set{ViewState["PageCount"]=value;}
}
2.使用ViewState的條件
若是要使用ViewState,則在ASPX頁面中必需要有一個服務器端窗體標記(<form runat = "server">)。窗體字段是必須的,這樣包含ViewState信息的隱藏字段才能被傳回服務器。並且,該窗體還必須是服務器端的窗體,這樣 在服務器上執行該頁面時,ASP.net頁面框架才能添加隱藏字段。
page的EnableViewState 屬性值爲true
控件的EnableViewState 屬性值爲 true
4、viewstate與session的對比
(1) session值是保存在服務器內存上,那麼,能夠確定,大量的使用session將致使服務器負擔加劇. 而viewstate因爲只是將數據存入到頁面隱藏控件裏,再也不佔用服務器資源,所以, 咱們能夠將一些須要服務器"記住"的變量和對象保存到viewstate裏面. 而session則只應該應用在須要跨頁面且與每一個訪問用戶相關的變量和對象存儲上.
(2) session在默認狀況下20分鐘就過時,而viewstate則永遠不會過時.
但viewstate並非能存儲全部的.net類型數據,它僅僅支持String、Integer、Boolean、Array、ArrayList、Hashtable 以及自定義的一些類型.
任何事物都有兩面性, 使用viewstate會增長頁面html的輸出量,佔用更多的帶寬,這一點是須要咱們慎重考慮的. 另外, 因爲全部的viewstate都是存儲在一個隱藏域裏面,用戶能夠很容易的經過查看源碼來看到這個通過base64編碼的值.而後再通過轉換就能夠獲取你 存儲其中的對象和變量值
5. Cookie
用於保存客戶瀏覽器請求服務器頁面的請求信息,其有效期能夠人爲設置,並且其存儲的數據量很受限制,所以不要保存數據集及其餘大量數據。並且Cookie以明文方式將數據信息保存在客戶端的計算機中,所以最好不要保存敏感的未加密的數據。
如下是cookie的幾種方法:
6.隱藏域
隱藏域是網頁裏面一個特殊的空間,它不在網頁中顯示出來,主要用途是爲網頁交互時存儲一些不須要在網頁顯示的數據
隱藏域是用來收集或發送信息的不可見元素,對於網頁的訪問者來講,隱藏域是看不見的。當表單被提交時,隱藏域就會將信息用你設置時定義的名稱和值發送到服務器上。
例如:<input type="hidden" name="ExPws" value="dd">
其實說白了就隱藏域不在前臺顯視的,跟表單的元素同樣.有名字有數值,只是在提交數據是不可見的.
例子:在ASP中隱藏域能夠用於隱藏的表單,這樣輸入框就能夠不受表單的限制能夠隨意在網頁上佈局
<input name="id" type="hidden" value="abc">
<%="隱藏域值爲:"& request("id")%>
提交此表單後會顯示
隱藏域值爲:abc
7.查詢字符串
當服務器執行到Response.Redirect語句時,會當即中斷頁面的生命週期,直接向客戶端返回信息,讓客戶端進行重定向操做。
ASP.NET中,服務器端重定向有三種方法
1.Server.Transfer("xxx.aspx"):
服務器中止解析本頁,保存此頁轉向前的數據後,再使頁面轉向到newPage.aspx, 並將轉向前數據加上newPage.aspx頁結果返回給瀏覽器。
2.Server.Execute("xxx.aspx");
服務器保存此頁轉向前的數據後,使頁面轉向到newPage.aspx執行, 再返回本頁繼續執行.再將三者結果合併後返回給瀏覽器.
3.Response.Redirect("xxx.aspx"):
服務器執行到這個方法時,就發信息告訴客戶端瀏覽器,讓客戶端瀏覽器發出一個新的http請求,該請求的url爲"xxx.aspx"。瀏覽器因而經過全新的http請求而轉到了xxx.aspx頁面。
總結:
1.用戶變量的存儲:session比較經常使用
2.頁面跳轉:查詢字符串比較經常使用
3.緩存
l cookie(用於保存客戶瀏覽器請求服務器頁面的請求信息,其有效期能夠人爲設置,並且其存儲的數據量很受限制)
l cache(用於數據緩存更新)
l viewstate(存儲在一個隱藏域裏面, 不佔用服務資源,永遠不會過時但會增長html輸出量,佔用帶寬)
l application(應用於整個應用程序,至關於全局變量,可是用處不是很普遍,能夠用於統計人數)