標籤:使用 資料 io 工作 管理 時間
第三部分,狀態管理與緩衝
何為狀態管理,起始對於web而言,經過前面章節的講解,已經理解,對於web程式,就是一個無狀態的程式,每次的請求與每次的響應,兩者之間本身就是獨立存在的,這一點對於早期的靜態網頁來說,倒沒什麼,因為每次的請求和響應其實都是固定不變的。但是到了動態網頁時代,就不行了,web開發的很大一部分工作將變為狀態管理。這一點,可能舉一個例子,最具有代表性,比如說購物車,那麼對於購物車而言,就需要知道他的訪問者是誰?雖然他們可以在不同的頁面切換,但是購物車不能夠變化,此時就是一種狀態管理。
(更多狀態管理的情境,各位可以補充)
第14章工作階段狀態
Session就是一種工作階段狀態,統一瀏覽器在一段時間內訪問伺服器之後,會產生一個24位的唯一SessionID,這個ID就標識了用戶端的身份,雖然客戶可以在不同的網頁間切換,但是SessionID都是不變的。
Session的用法,Session是Page類的內部屬性,然後直接採用KEY/VALUE模式直接使用。
Session的情境,分為兩種:服務端和用戶端
服務端:意思就是說Session所定義的需要緩衝的變數的儲存位置,可以儲存在進程中,專有伺服器,資料庫
用戶端:意思就是說SessionID的儲存位置,可以使cookies,也可以是url當中(用於解決非cookie支援的瀏覽器)
Web.confg 中的<sessionState></sessionState>節用於完成該部分的設定。
Session可以儲存的資料類型,除了簡單地資料類型以外,所有的可以序列化的類型都是客戶儲存的。
說明: page類的內建對象,有application,session,cache,request,response等,通常很多人都是用application,session,cache來用作資料緩衝,其實他們是有區別的。
Application,是作為全域變數在使用,他在進程中,生命週期為應用程式生命週期。它越多佔用記憶體越多。
Session,其實它不僅僅是存取一個變數,他儲存的是一個會話內的變數,而且他會有sessionID來區分用戶端,session儲存變數只是他的一個間接實現功能。並且他可以存在進程,資料庫,或者專用伺服器中。
Cache,他是儲存在進程中,生命週期是可以設定的,他有比較靈活的屬性,包括到期時間,到期通知等等,他目的是完成複雜物件的緩衝處理。
第15章應用程式資料的緩衝
Cache對象介紹,使用方法類似Session,目的是改善複雜變數的擷取方式。提升web訪問的效能。
第16張輸出緩衝
剛開始看的時候,還真是沒有特別理解什麼叫做輸出緩衝,後來看了一下原來就是所謂的頁面緩衝,不同的書籍,叫法可能不同而已。為什麼會存在頁面緩衝哪?本質目標是改善web訪問的效能,對於重複網頁不要重複計算,降低伺服器的壓力,提升web應用的效能,因此從資料的角度緩衝,產生了cache,從頁面的角度產生了輸出緩衝,就是頁面產生後,放在一個地方,然後每次請求直接返回該頁面。
用法:就是在每個頁面頭部使用<%@outputcache >指令,屬性包括周期,依賴項等等。
說明:個人覺得,只從有了ajax後,輸出緩衝的意義降低了,因為可以局部重新整理,輸出整個頁的概念不大了。