java基礎之緩存:session、cookie和cache的區別


以前實現數據的緩存有很多種方法,有客戶端的Cookie,有服務器端的Session和Application。

其中Cookie是保存在客戶端的一組數據,主要用來保存用戶名等個人信息。

Session則保存對話信息。Application則是保存在整個應用程序范圍內的信息,相當於全局變量。

Session

Session用來保存每一個用戶的專有信息

Session的生存期是用戶持續請求時間加上一段時間(一般是20分鍾左右)

Session信息是保存在Web服務器內存中的,保存數據量可大可小 
由於用戶停止使用應用程序之后它仍在內存中存留一段時間,因此這種方法效率較低

代碼:

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

 

Cookie

Cookie用來保存客戶瀏覽器請求服務器頁面的請求信息

我們可以存放非敏感的用戶信息,保存時間可以根據需要設置

如果沒有設置Cookie失效日期,它的生命周期保存到關閉瀏覽器為止

Cookie對象的Expires屬性設置為MinValue表示永不過期

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

由於並非所有的瀏覽器都支持Cookie,數據將以明文的形式保存在客戶端

代碼:

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

 

Cache

Cache用於在Http請求期間保存頁面或者數據

Cache的使用可以大大的提高整個應用程序的效率

它允許將頻繁訪問的服務器資源存儲在內存中,當用戶發出相同的請求后,服務器不是再次處理而是將Cache中保存的數據直接返回給用戶

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

Cache實例是每一個應用程序專有的,其生命周期==該應用程序周期

應用程序重啟將重新創建其實例

注意:如果要使用緩存的清理、到期管理、依賴項等功能必須使用Insert 或者Add方法方法添加信息

代碼:

Cache[”ID”]=”cc”;或者Cache.Insert(“ID”,”test”); 
String ID =Cache[“ID”].ToString();

 

通常使用最頻繁的是Session,那么Session和Cache又有什么區別呢?

Session緩存和Cache緩存的區別:

(1)最大的區別是Cache提供緩存依賴來更新數據,而Session只能依靠定義的緩存時間來判斷緩存數據是否有效。

(2)即使應用程序終止,只要Cache.Add方法中定義的緩存時間未過期,下次開啟應用程序時,緩存的數據依然存在。而Session緩存只是存在於一次會話中,會話結束后,數據也就失效了。

(3)Session容易丟失,導致數據的不確定性,而Cache不會出現這種情況。

(4)由於Session是每次會話就被加載,所以不適宜存放大量信息,否則會導致服務器的性能降低。而Cache則主要用來保存大容量信息,如數據庫中的多個表。

(5)Session目前只能保存在內存中,對其性能有影響。

 

原文鏈接:http://blog.csdn.net/u012251421/article/details/45333315


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM