关于Session的使用和优化
生活随笔
收集整理的這篇文章主要介紹了
关于Session的使用和优化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
優點
如果要在諸多Web頁間傳遞一個變量,那么用Session變量要比通過QueryString傳遞變量可使問題簡化。
要使WEb站點具有用戶化,可以考慮使用Session變量。你的站點的每位訪問者都有用戶化的經驗,基于此,隨著LDAP和諸如MS Site Server等的使用,已不必再將所有用戶化過程置入Session變量了,而這個用戶化是取決于用戶喜好的。
你可以在任何想要使用的時候直接使用session變量,而不必事先聲明它,這種方式接近于在VB中變量的使用。使用完畢后,也不必考慮將其釋放,因為它將自動釋放。
缺點
Session變量和cookies是同一類型的。如果某用戶將瀏覽器設置為不兼容任何cookie,那么該用戶就無法使用這個Session變量!
當一個用戶訪問某頁面時,每個Session變量的運行環境便自動生成,這些Session變量可在用戶離開該頁面后仍保留20分鐘!(事實上,這些變量一直可保留至“timeout”。“timeout”的時間長短由Web服務器管理員設定。一些站點上的變量僅維持了3分鐘,一些則為10分鐘,還有一些則保留至默認值20分鐘。)所以,如果在Session中置入了較大的對象(如ADO recordsets,connections, 等等),那就有麻煩了!隨著站點訪問量的增大,服務器將會因此而無法正常運行!
因為創建Session變量有很大的隨意性,可隨時調用,不需要開發者做精確地處理,所以,過度使用session變量將會導致代碼不可讀而且不好維護。
雖然“你可以在任何想要使用的時候直接使用session變量,而不必事先聲明它,這種方式接近于在VB中變量的使用。使用完畢后,也不必考慮將其釋放,因為它將自動釋放”。但是,“誰”想到那兒呢?變量的含義是什么?這些都變得不很清晰。
*********************************************************************************************************************************************************************
Session使用的優化
ASP.NET 里面 SessionState有三種可以選擇的模式? ?
有很多頁面里面只需要從Session里面讀取數據的而不需要寫入數據到Session, 對于這些頁面我們可以將頁面標記為<%@ Page EnableSessi . . .%>。這樣可以將頁面執行時對SQL Server 數據庫操作由兩次減少為一次。
對于不需要使用Session的頁面,我們可以將頁面標記為<%@ Page EnableSessi . . .%>。
如果要在諸多Web頁間傳遞一個變量,那么用Session變量要比通過QueryString傳遞變量可使問題簡化。
要使WEb站點具有用戶化,可以考慮使用Session變量。你的站點的每位訪問者都有用戶化的經驗,基于此,隨著LDAP和諸如MS Site Server等的使用,已不必再將所有用戶化過程置入Session變量了,而這個用戶化是取決于用戶喜好的。
你可以在任何想要使用的時候直接使用session變量,而不必事先聲明它,這種方式接近于在VB中變量的使用。使用完畢后,也不必考慮將其釋放,因為它將自動釋放。
缺點
Session變量和cookies是同一類型的。如果某用戶將瀏覽器設置為不兼容任何cookie,那么該用戶就無法使用這個Session變量!
當一個用戶訪問某頁面時,每個Session變量的運行環境便自動生成,這些Session變量可在用戶離開該頁面后仍保留20分鐘!(事實上,這些變量一直可保留至“timeout”。“timeout”的時間長短由Web服務器管理員設定。一些站點上的變量僅維持了3分鐘,一些則為10分鐘,還有一些則保留至默認值20分鐘。)所以,如果在Session中置入了較大的對象(如ADO recordsets,connections, 等等),那就有麻煩了!隨著站點訪問量的增大,服務器將會因此而無法正常運行!
因為創建Session變量有很大的隨意性,可隨時調用,不需要開發者做精確地處理,所以,過度使用session變量將會導致代碼不可讀而且不好維護。
雖然“你可以在任何想要使用的時候直接使用session變量,而不必事先聲明它,這種方式接近于在VB中變量的使用。使用完畢后,也不必考慮將其釋放,因為它將自動釋放”。但是,“誰”想到那兒呢?變量的含義是什么?這些都變得不很清晰。
*********************************************************************************************************************************************************************
Session使用的優化
ASP.NET 里面 SessionState有三種可以選擇的模式? ?
| 方式 | 說明 | 優點 | 缺點 |
| InProc | 會話值在aspnet_wp.exe 或 w3wp.exe的內存中保持為活動對象。這是默認選項。 | 性能最好 | 當W3WP 進程 死掉 或者進程回收后,Session信息將會丟失。 占用Web 服務器的內存用于保存Session信息 |
| StateServer | 會話值被序列化并存儲在單獨進程 (aspnet_state.exe) 的內存中。該進程還可以在其他計算機上運行。 | 在負載均衡條件下,可以為多個Web 服務器維護Session信息 當W3WP 進程 死掉 或者進程回收后,Session信息不會丟失 | 性能比InProc方式差 |
| SQL Server | 會話值被序列化并存儲在 SQL Server 表中。SQL Server 的實例可以在本地運行,也可以遠程運行 | 在負載均衡條件下,為多個Web 服務器維護Session信息 當W3WP 進程 死掉 或者進程回收后,Session信息不會丟失 當Web服務器死機或者重新啟動后,Session信息不會丟失. | 性能比InProc方式差 缺省情況下 每個頁面需要操作兩次SQL Server 數據庫操作。第一次讀取Session,第二次寫入Session. |
- ? 頁面的EnableSessionState開關
有很多頁面里面只需要從Session里面讀取數據的而不需要寫入數據到Session, 對于這些頁面我們可以將頁面標記為<%@ Page EnableSessi . . .%>。這樣可以將頁面執行時對SQL Server 數據庫操作由兩次減少為一次。
對于不需要使用Session的頁面,我們可以將頁面標記為<%@ Page EnableSessi . . .%>。
- 減少Session 里面存放的數據量
總結
以上是生活随笔為你收集整理的关于Session的使用和优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 字符串交集_Python序
- 下一篇: 面向对象编程思想---OOP