1. 程式人生 > >最近一週的學習簡要

最近一週的學習簡要

按照傳智播客的NET學習視訊自學的:

無狀態Http

       HTTP協議是無狀態的,不會記得上次和網頁“發生了什麼”(故事:24小時記憶)。伺服器不記得上次給瀏覽器什麼,瀏覽器需要記住這些值(intpu就是幾道value中,對於其他的值就要放到隱藏欄位中,比如viewstate),下次在提交給伺服器的時候(請再我的寬度按基礎上增加10),就要把上次的值提交給伺服器,讓他想起來。如果要知道上一次的狀態,一個方法是在對瀏覽器響應結束之前將狀態資訊儲存到也米昂表單中,下次頁面再向伺服器發出請求的時候帶上這些狀態資訊,就這樣伺服器就能根據這些狀態資訊還原上次的狀態了,類似看病的病歷本。

狀態資訊儲存在隱藏欄位中的缺點:加大網站的流量、降低訪問速度、集美資料放到表單總會有資料欺騙等安全問題。故事:自行列印存摺,因為餘額不是寫到存摺這個隱藏欄位總的,唯一的關聯就是卡號,要把機密資料放到伺服器,並且卻別不同的訪問者的私密區域,那麼就要一唯一的標識。

Cookie(很給力)

表單是和頁面相關的,只有瀏覽器端提交了這些資料伺服器端才能得到。而有時候希望賊服務端任意的地方存取一些和訪問者相關的資訊,這時候就不方便將這些資訊保持到表單中了,因為如果那樣的話必須隨時注意在所有頁面表單中都要保持這些資訊。Cookie是和站點相關的,並且每次想伺服器請求的時候除了傳送表單引數外,還會將和站點相關的所有cookie都提交給伺服器,是強制性的。Cookie也是保持在瀏覽器 端的,而且瀏覽器會在每次請求的時候會把和這個站點相關的cookie提交到伺服器,並且將伺服器返回的cookie更新會資料庫,因此可以將資訊儲存到cookie中,然後在伺服器端讀取、修改。伺服器返回資料出了普通的html資料外,還回返回修改的cookie,瀏覽器把難道的cookie值更新本地瀏覽器的cookie就可以了,將你的主機分配一個ID,儲存在cookie中,作為唯一標示。

網際網路優化的案例:圖片伺服器和主站域名不一樣,降低cookie的流量的次數傳輸。

案例:一個頁面設定cookie,一個頁面讀取cookie

       設定值的頁面:response.setCookie(newHttpCookie(“UserName”.TextBox1.Text));

       讀取值的頁面:Label.Text = Request.Cookies[“UserName”].Value;

Cookie的缺點和表單一樣,而且還不嫩儲存過多的資訊

Session 原理(迷糊了好久)

Private int i=0; 每次請求來了都會new一個新的實現了IhttpHandler介面的累“便利1”的石磊進行處理,用完了就GC叼,所以不會儲存上次的值(有時候會考到)

Cookie不能儲存過多的資訊,如果想儲存大量的資料,可以儲存一個Guid到Cookie中,然後在伺服器中建立一個以Guid為Key,複雜資料為Value全域性Dictionary,statie欄位對已不同使用者也只有一份,因此用static實現多使用者貢獻資料。

ASP.NET已經內建了Session機制,把上面的例子用ASP NETSession重寫,不要放太多的物件到Session,Session會有超時銷燬機制,發帖(伺服器不可能欄位瀏覽器是否開著,什麼時候關閉),發帖計時,線上時間統計,靠請求來判斷是否還或者,Cooki是存在客戶端,Session是存在伺服器端,目的是一樣的,儲存和當前客戶端相關的資料,不能放太大的資料,放的資料是object。

可以看到Session機制不是Http 協議規定的,是Asp NET實現的,現在PHP/JSp 等大部分伺服器技術都實現了Session,原理差不多

案例:用Session實現驗證碼

學到這裡終於對WEB有點點感覺了,感覺這才算真是的技術知識,繼續學習了