[.net 面向對象程序設計進階] (14) 緩存(Cache)(一) 認識緩存技術
本節導讀:
緩存(Cache)是一種用空間換時間的技術,在.NET程序設計中合理利用,可以極大的提高程序的運行效率。
本節將介紹如何利用緩存寫出高效率的代碼。
1. 什么是緩存(Cache)?
緩存(Cache)是一種用空間換取時間的技術
存在於計算機中很多地方,用來將一些慢速設備中的常用數據保存在快速設備中,取數據的時候直接從快速設備中取。
比如CPU二級緩存、內存、windows文件讀取緩存。
2. .NET緩存技術分類
.NET的緩存從軟件架構角度分為客戶端緩存和服務器端緩存.
這里主要介紹幾種常用的緩存技術:
基於Web客戶端緩存:Cookies
基於Sever端緩存:Session、Application、Cache
3. 緩存的優缺點
緩存的優點:以空間換取時間,通過緩存,提高了訪問效率。
緩存的缺點:對於即時性要求較高的程序來說,緩存不具備即時性。
因此我們在使用緩存技術時,要充分考慮使用環境,合理利用緩存。
最常用的工廠反射模式中,我們就可以利用緩存來存儲動態反射的對象,以備下次訪問時,快速返回.
4.客戶端緩存Cookies
4.1 Cookie應用場景
Cookie可以保持登錄信息到用戶下次與服務器的會話,換句話說,下次訪問同一網站時,用戶會發現不必輸入用戶名和密碼就已經登錄了(當然,不排除用戶手工刪除Cookie)。而還有一些Cookie在用戶退出會話的時候就被刪除了,這樣可以有效保護個人隱私。
主流的瀏覽器都默認支持Cookie,由於Cookie會記錄用戶的一些信息,因此出現了很多廣告窗,就是利用這一特性,能知道我們最近都瀏覽和關注了什么,從而定向顯示廣告。
4.2 Cookies的生命周期
Cookie在生成時就會被指定一個Expire值,這就是Cookie的生存周期,在這個周期內Cookie有效,超出周期Cookie就會被清除。有些頁面將Cookie的生存周期設置為“0”或負值,這樣在關閉瀏覽器時,就馬上清除Cookie,不會記錄用戶信息,更加安全。
因此Cookie的生命周期,只要不清除,就一直存在於緩存文件中。
4.3 Cookie的使用
Cookie在Web的應用非常廣泛。下面列舉我們常用的Jquery庫中對Cookie的操作
先說一下Jquery庫,目前可以說是Javascript的標准庫了,操作簡單,輕量級,非常受歡迎。由於本系列主要討論的是.NET面向對象程序設計,我們下面,簡單的列舉出基於Jquery庫的一個Cookie操作組件:jquery.cookie.js
使用方法
A.新添加一個會話 cookie:
$.cookie('the_cookie', 'the_value');
注:當沒有指明 cookie有效時間時,所創建的cookie有效期默認到用戶關閉瀏覽器為止,所以被稱為
“會話cookie(session cookie)”。
B.創建一個cookie並設置有效時間為 7天:
$.cookie('the_cookie', 'the_value', { expires: 7 });
注:當指明了cookie有效時間時,所創建的cookie被稱為“持久 cookie (persistent cookie)”。
C.創建一個cookie並設置 cookie的有效路徑:
$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
注:在默認情況下,只有設置 cookie的網頁才能讀取該 cookie。如果想讓一個頁面讀取另一個頁面設
置的cookie,必須設置cookie的路徑。cookie的路徑用於設置能夠讀取 cookie的頂級目錄。將這
個路徑設置為網站的根目錄,可以讓所有網頁都能互相讀取 cookie (一般不要這樣設置,防止出現沖突) 。
D.讀取cookie:
$.cookie('the_cookie'); // cookie存在 => 'the_value'
$.cookie('not_existing'); // cookie不存在 => null
E.刪除cookie,通過傳遞null作為cookie的值即可:
$.cookie('the_cookie', null);
5. Session和Application
5.1 Session 在.NET 5 中應用
如下:
<div style="position:fixed;top:200px;left:200px;width:200px;height:200px;text-align:center; line-height:100px;"> @{ ViewBag.Title = "Home Page"; Session["user"] = "yubinfeng"; string user = Session["user"] is Nullable ? "" : Session["user"].ToString(); } Session 讀取: @Html.Raw(user) <br> </div>
上面代碼中括號中,使用的是MVC中的一些頁面語法,后面會涉及到,這里主要說明Session的賦值及取值。
運行MVC項目結果如下:
Seeion生命周期是會話級,一個會話結束Session失效,打開一個瀏覽器請求一個網站的頁面后,Session開始,當session超過時間限制(一般是20分種)后,session注銷而失效 或是人為使用session.invalidate();使用session失效。
5.2 Application
另一個Application 在WebForm為應用程序級的存儲,生命周期為服務端應用程序啟用動時開始到應用程序重啟失效。比如公共在線人數等存儲可以用到,在MVC框架中會有更好的實現服務器級存儲的方法,后面在MVC的時候具體介紹。
6. 要點:
本節主要介紹了緩存的基礎知識及幾種緩存的簡單應用,下一節重點說明服務器端的緩存Cache,這也是我們.NET程序設計的重點。
==============================================================================================
<如果對你有幫助,記得點一下推薦哦,如有有不明白或錯誤之處,請多交流>
<對本系列文章閱讀有困難的朋友,請先看《.net 面向對象編程基礎》>
<轉載聲明:技術需要共享精神,歡迎轉載本博客中的文章,但請注明版權及URL>
==============================================================================================