綠色資源網:您身邊最放心(xīn)的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網

技術教程
您的位置:首頁服務器類Web服(fú)務(wù)器 → web中緩存的使用

web中緩存(cún)的使用(yòng)

我要評論 2009/06/27 12:59:12 來源:綠色資源網 編輯:佚名 [ ] 評論(lùn):0 點擊:251次(cì)

很多人都知道什麽(me)叫緩存,甚至學習過,但用起(qǐ)來還真難用。我經過幾(jǐ)天的學習cache想(xiǎng)跟大家(jiā)分享和討論。

我是帶著(zhe)疑問去學習的。緩存是用在什麽地方,有什麽好處。

緩存就是把獲取的數據暫時存到緩存中,當獲取的數據沒有變化時就還是用緩存裏的東西。可(kě)能有人會問怎麽判斷獲取(qǔ)的數據(jù)沒有變化?這個等下會說到。這樣從緩存數據可是獲(huò)取數據速度快很多,但(dàn)要求數(shù)據不時時常變化的。像博客園(yuán)裏的博客排行榜,基本沒變化,這是雖是數據不怎麽變化,但這樣頁麵每個人瀏覽都是一樣的東西,那又何必用緩存幹什麽呢?直接把此頁麵生成html,這樣打開的速度比用緩存還快。

當一(yī)個頁麵既有公共部分(每個人瀏覽的都一樣)又有個性部分(自(zì)己(jǐ)的信息)。比如當當網裏就有個購物車當你購完物時,底單上麵有推薦買的產(chǎn)品(這也產品可能一天換一次),當然推薦的產品跟你買的產品有(yǒu)關,此時不能生成html了(le),因為不是每個人瀏(liú)覽此(cǐ)頁(yè)麵都相同,隻有當用戶(hù)買的產品相關到推薦的產(chǎn)品相同時。此(cǐ)時就要用緩存存此推薦產品(pǐn)的數據,當然這個緩存鍵值是跟買的產品有關,隻要買的產品相關得到的推薦產品(這裏麵有一種關係在裏(lǐ)麵)才能該緩存的東西。

打個比方:當(dāng)你買書時就會推薦其他好書給你(nǐ),此時買(mǎi)書的推薦書都一樣,調用的緩存都一樣,而買電腦的話(huà)可能會推薦你(nǐ)各種好電腦(nǎo)給你,這時調(diào)用推薦電腦的緩存。

上(shàng)麵可能講了下緩存用在什麽(me)地方,當然我隻(zhī)知道這種情況,可能還有其他情況,那位知道可評論下。

緩存的好(hǎo)處當然是減輕服務器的負擔,加快瀏覽速度。但如果緩存(cún)用得不好(hǎo),可能得到的數據是過時(shí)的,或者反而使瀏覽熟讀更慢。(當你緩存經常變化(huà)的數據時)

緩存有分客戶端緩存服務器端緩存嗎?

兩個都有,隻是客戶端緩存內嵌在瀏覽(lǎn)器中,基本上是瀏覽器自動處(chù)理緩存。

客(kè)戶端緩存可以有效地減輕服務器端負(fù)載。首先了解一下 HTTP 頭:Last-Modified 與 If-Modified-Since。簡單(dān)的說,Last-Modified 與If-Modified-Since 都是用於記錄頁麵最後修改時(shí)間的 HTTP 頭信息,隻是 Last-Modified 是由服務器往客戶端發送的 HTTP 頭,而 If-Modified-Since 則是由客戶端往服務器發送的(de)頭實現。

在瀏覽器可設置瀏覽器如何使用緩存(cún)的。一般默認是自(zì)動。操(cāo)作步(bù)驟如下:

工具-》internet選項-》常規-》設置-》檢(jiǎn)查網頁的較(jiào)新(xīn)版本中有(yǒu)四個選項來控製(zhì)緩存的運用

當然代碼可(kě)控製客戶(hù)端緩存,比如比想要瀏覽器緩存東西可用下麵代碼

html禁(jìn)用(yòng)客戶端緩(huǎn)存

以(yǐ)下為引用的內容:
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalsidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1978 08:21:57 GMT">

C#中禁止cache的方法!

以下(xià)為引用的內容:
Response.Buffer = true;
Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";

我對客戶(hù)端緩存知道太少,而且我們寫程序也很少(shǎo)寫客戶端緩存, 希望有人提供更多關於客(kè)戶端緩存的東西。

服務端緩存有System.Web.Caching.cahe和memcached

當然System.Web.Caching.cahe是微軟寫的類,而memcached是第三方插件(jiàn)。System.Web.Caching.cache目前還不是分布式緩存(cún),隻能在(zài)一台電(diàn)腦上(07時候),而

memcached是分布式的高速緩存。

服務(wù)器緩存可分為三種緩存

1.輸(shū)出緩存:

要實現(xiàn)頁麵輸出緩(huǎn)存,隻要將(jiāng)一(yī)條 OutputCache 指令添加到(dào)頁(yè)麵即可。

<%@ OutputCache Duration="60" VaryByParam="*" %>

如同其他頁麵指令一(yī)樣,該(gāi)指令應該出現在(zài) ASPX 頁麵的頂部,即在任何輸出之前。它支持五個屬性(或參數),其中兩個是必需的(de)。

Duration

必需屬性。頁麵應該被緩存的時間,以秒為(wéi)單位。必須是正整數。

locations

指定(dìng)應該對輸出進行緩存的位(wèi)置。如(rú)果(guǒ)要指定該參數,則必須是下列選項之一:Any、Client、Downstream、None、Server 或 ServerAndClient。

VaryByParam

必需屬性。Request 中變量的(de)名稱,這些變量名應該(gāi)產(chǎn)生單獨的緩(huǎn)存條目(mù)。“none” 表(biǎo)示(shì)沒有(yǒu)變動。“*” 可用於為每個不同的變(biàn)量數組創建(jiàn)新的(de)緩存條(tiáo)目。變量之間用 “;” 進行(háng)分隔。

VaryByHeader

基於指定的標頭中的變動改(gǎi)變緩存條目。

VaryByCustom

允許在 global.asax 中指(zhǐ)定(dìng)自定義變動(例如(rú),“Browser”)。

2.片段緩存:

示例

<%@ OutputCache Duration="60" VaryByParam="*" %> 該示例將(jiāng)緩存用戶控件60秒,並且將針對查詢字符串的每個變動、針對此控件所在的每個頁(yè)麵創建單獨(dú)的緩存條(tiáo)目。<%@ OutputCache Duration="60" VaryByParam="none"
VaryByControl="CategoryDropDownList" %> 該示例將緩存用戶(hù)控件60秒,並且將針(zhēn)對CategoryDropDownList控件的每個不同(tóng)的值、針對此控件所在的每個頁麵創建單獨的緩存條目。<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser"
Shared="true" %>

最後,該示例將緩存用戶控(kòng)件60秒,並且將針對每個(gè)瀏覽器名稱和主要版本創建一個緩存條目。然(rán)後,每個瀏(liú)覽器的緩存條目將由引用此用戶控件(jiàn)的所有頁麵共享(隻要所有頁麵都用相同的ID引用該控件即可)。

3.編程用得最多的緩存:數據緩(huǎn)存

System.Web.Caching.cahe被httpRuntime.Cache或HttpContext.Current.Cache實例化。httpRuntime.Cache,HttpContext.Current.Cache是內置(zhì)對象就想(xiǎng)當與seesion。

HttpContext.Current.Cache與HttpRuntime.Cache區別:

HttpContext.Current.Cache:為當前 HTTP 請求獲取(qǔ)Cache對象。 HttpRuntime.Cache:獲取當前應用程序的Cache。HttpContext.Current.Cache是調用了 HttpRuntime.Cache,且HttpContext.Current.Cache是用在web程序上(shàng),而HttpRuntime.Cache是用在任何程(chéng)序上。System.web命名空間下。

其實HttpContext.Current.Cache是通(tōng)過 HttpRuntime.Cache來實現的,所以(yǐ)一般實例化最好通過HttpRuntime.Cache來實例化:

例如:System.Web.Caching.Cache cache = HttpRuntime.Cache

System.Web.Caching.Cache有(yǒu)很多方法,但方法(fǎ)中(zhōng)add中(zhōng)是(shì)存緩存

參數中有緩存時間,依賴(lài)項。

緩存時間即到當緩(huǎn)存(cún)的東西達到指定時間就讓(ràng)緩存失效,而依賴項是當依賴項發生變化就會使緩存失效。

依(yī)賴項有一般(bān)依賴項 CacheDependency和數據庫依賴項SqlCacheDependency。

雖然CacheDependency類(lèi)完成了很重要的(de)功能,但其組成結構卻比較簡單,主要(yào)有兩個(gè)屬性和一個方(fāng)法。

— 屬性“HasChanged”:判斷CacheDependency對象(xiàng)是否已更改。

— 屬性(xìng)“UtcLastModified”:返(fǎn)回上次依賴項的修改日期(qī)

— 方法“Dispose”:釋(shì)放(fàng)CacheDependency對象所占有的資源。因為緩存類繼承了(le)接(jiē)口“IDispose”,所以必須實(shí)現此方法。

CacheDependency

例如 Cache.Insert(“key”, myXMLFileData, DateTime.Now.AddMinutes(1),,new

System.Web.Caching.CacheDependency(Server.MapPath(“users.xml”)));

users.xml文件就相(xiàng)當一般依賴項,當xml文件被改了,則此緩存失效。

SqlCacheDependency一般是增對數據庫的,這個設置(zhì)需要在(zài)config裏設置,而且還要啟(qǐ)動數據庫的這樣服(fú)務。

Cache.Insert 中可設置跟數據庫中那個表關聯,一旦表有變化就會導(dǎo)致cache失效。

可到網上查詢如何使用

關(guān)鍵詞:web

閱讀本文後您有什(shí)麽感想? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡