溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么在A(yíng)SP.NET中正確的使用Cache

發(fā)布時(shí)間:2020-12-18 15:38:01 來(lái)源:億速云 閱讀:187 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)怎么在A(yíng)SP.NET中正確的使用Cache,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

Cache 即高速緩存 ,我想非常多人對(duì)他的第一印象一定像我相同,感覺(jué)他一定能提高系統(tǒng)得性能和運(yùn)行速度。的確。Net推出cache的初衷確實(shí)是這樣的。那么cache是怎么提高系統(tǒng)性能和運(yùn)行速度呢?是不是在所有情況下用cache都能提高性能?是不是cache用的越多就越好呢?我在近期研發(fā)的項(xiàng)目中有所體會(huì),寫(xiě)下來(lái)當(dāng)作總結(jié)也希望能跟大家一起探討探討,有錯(cuò)誤的地方希望大家批評(píng)指正。
  
  1.Cache 是怎么工作的
  
  Cache 是分配在服務(wù)器上的一個(gè)公共的內(nèi)存片。
  
  所謂公共指的cache只要一創(chuàng)建是所有一個(gè)客戶(hù)端瀏覽器都能通過(guò)后臺(tái)代碼訪(fǎng)問(wèn)到他,他面向的是所有用戶(hù),相對(duì)而言session也是服務(wù)器上的一段內(nèi)存,但他面向的是單個(gè)用戶(hù)。他是服務(wù)器的一段內(nèi)存塊,也就是說(shuō)每個(gè)cache一經(jīng)創(chuàng)建就占用了服務(wù)器資源的。所以從這點(diǎn)來(lái)說(shuō)我們就能說(shuō):并不是cache越多越好。
  
  cache 是有時(shí)間限制的,超過(guò)了服務(wù)器設(shè)定的過(guò)期時(shí)間,他就會(huì)被服務(wù)器回收。
  
  c.cache 能存放所有對(duì)象
  
  2.Cache 怎么創(chuàng)建及怎么銷(xiāo)毀
  
  創(chuàng)建cache
  
  在。Net環(huán)境下通過(guò)Cache.Insert(string key,object o)方法創(chuàng)建。其中key 代表cache的ID,o代表存到cache里的對(duì)象。
  
  銷(xiāo)毀cache.
  
  通過(guò)方法Cache.Remove(string key)其中key 代表cache的 ID.
  
  調(diào)用cache.
  
  Cache支持裝箱/拆箱操作。如你能把一個(gè)DataSet對(duì)象ds通過(guò)Cache.Insert(“dsCache”,ds)的方式存到Cache中,能通過(guò)拆箱操作 DataSet ds = (DataSet)Cache[“dsCache”]來(lái)訪(fǎng)問(wèn)他。
  
  3.什么時(shí)候用cache
  
  Cache 一般用于數(shù)據(jù)較固定,用的較頻繁的地方。例如能把進(jìn)銷(xiāo)存系統(tǒng)中能把產(chǎn)品信息存入cache,在用戶(hù)調(diào)用產(chǎn)品信息時(shí)通過(guò)調(diào)用cache即可,這樣從非常大程度上減少了用戶(hù)和數(shù)據(jù)庫(kù)的交互,提高了系統(tǒng)的性能。反之,cache不適合用在數(shù)據(jù)變動(dòng)快,使用范圍非常窄的地方。例如把一個(gè)具體采購(gòu)單存入 cache中。
  
  4.cache 調(diào)用注意事項(xiàng)
  
  Cache是有時(shí)間限制的。超過(guò)了服務(wù)器設(shè)置的過(guò)期時(shí)間,就會(huì)被服務(wù)器回收。當(dāng)cache被回收后對(duì)應(yīng)的內(nèi)存塊就會(huì)被清空,再次通過(guò)cache[“cachekey”]訪(fǎng)問(wèn)對(duì)象時(shí)返回的就是null值。所以以下這種調(diào)用就會(huì)出現(xiàn)異常
  

  DataSet ds = (DataSet)Cache[“cacheds”];
  
  DataRow dr = ds.Table[0].Row[0]; //出錯(cuò),ds為null值,不存在表0。


  
  正確的寫(xiě)法應(yīng)該是:
  
  

DataSet ds
  
  If(Cache[“cacheds”] != null)
  
  {
  
  ds = (DataSet)Cache[“cacheds”];
  
  }
  
  Else
  
  {
  
  ds= GetDsFromDataBase();
  
  }
  
  DataRow dr = ds.Table[0].Row[0];

以上就是怎么在A(yíng)SP.NET中正確的使用Cache,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI