四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

ASP.NET緩存初探 使用得當(dāng)是關(guān)鍵

  緩存是在內(nèi)存存儲(chǔ)數(shù)據(jù)的一項(xiàng)技術(shù),也是ASP.NET中提供的重要特性之一,對(duì)于程序員來(lái)講,了解ASP.NET緩存的工作原理對(duì)于其設(shè)計(jì)程序是非常有用的。

  ASP.NET需要被緩存的對(duì)象多種多樣,包括從數(shù)據(jù)庫(kù)中提取出來(lái)的數(shù)據(jù),以及ASPx頁(yè)面生成的靜態(tài)頁(yè),甚至是編譯好的程序集。合理利用緩存能讓ASP.NET的性能大幅提升,下面將對(duì)ASP.NET中的緩存機(jī)制進(jìn)行簡(jiǎn)單概述。

緩存的分類(lèi)

  在ASP.NET中,大部分緩存機(jī)制是保存在cache對(duì)象中,也就是服務(wù)器內(nèi)存的一部分。當(dāng)用戶(hù)請(qǐng)求數(shù)據(jù)時(shí),如果數(shù)據(jù)已經(jīng)被緩存,則用戶(hù)所提取的數(shù)據(jù)直接從服務(wù)端返回,而不是從數(shù)據(jù)庫(kù)等底層數(shù)據(jù)庫(kù)提取。這對(duì)性能的提升不得不說(shuō)很有幫助。下面來(lái)看ASP.NET中幾種緩存機(jī)制。

程序集緩存

  簡(jiǎn)單的說(shuō),這種緩存是ASP.NET自帶的,無(wú)需開(kāi)發(fā)人員進(jìn)行參與的緩存方式。即當(dāng)?shù)谝淮握?qǐng)求服務(wù)器時(shí),Page類(lèi)以及相關(guān)程序集被編譯,當(dāng)下次請(qǐng)求時(shí),訪問(wèn)緩存后的編譯而不是重新編譯。CLR會(huì)自動(dòng)檢測(cè)代碼的改變,如果代碼改變后,當(dāng)下次訪問(wèn)時(shí),相關(guān)代碼會(huì)被重新編譯。

數(shù)據(jù)源緩存

  數(shù)據(jù)源緩存,也就是利用數(shù)據(jù)源控件對(duì)獲取的數(shù)據(jù)進(jìn)行緩存的方式。這些控件包括SqlDataSource,ObjectDataSource等,作為抽象類(lèi)的DataSourceControl暴漏了如下屬性用于緩存:

  CacheDuration獲取或設(shè)置以秒為單位的一段時(shí)間,數(shù)據(jù)源控件就在這段時(shí)間內(nèi)緩存 SelectMethod 屬性檢索到的數(shù)據(jù);CacheExpirationPolicy獲取或設(shè)置緩存的到期行為,該行為與持續(xù)時(shí)間組合在一起可以描述數(shù)據(jù)源控件所用緩存的行為;CacheKeyDependency獲取或設(shè)置一個(gè)用戶(hù)定義的鍵依賴(lài)項(xiàng),該鍵依賴(lài)項(xiàng)鏈接到數(shù)據(jù)源控件創(chuàng)建的所有數(shù)據(jù)緩存對(duì)象;EnableCaching 獲取或設(shè)置一個(gè)值,該值指示 ObjectDataSource 控件是否啟用數(shù)據(jù)緩存。

  而使用起來(lái)就非常簡(jiǎn)單了,只需要將緩存的相關(guān)屬性進(jìn)行設(shè)置即可。比如我想要當(dāng)前數(shù)據(jù)源緩存10秒,只需要設(shè)置EnableCaching屬性和CacheDuration屬性如下,這種方式的工作原理可以用下圖表示:

SQL Cache Dependency

  大家應(yīng)該注意到了上面的數(shù)據(jù)源控件還暴漏了CacheKeyDependency屬性,這是用于實(shí)現(xiàn)SQL Cache Dependency的方式,關(guān)于Dependency,其實(shí)就是在數(shù)據(jù)庫(kù)表內(nèi)容改變時(shí),將相應(yīng)的緩存進(jìn)行更新,正如Dependency這個(gè)詞的意思一樣,是緩存依賴(lài)底層數(shù)據(jù)庫(kù)。下面就要說(shuō)到兩種實(shí)現(xiàn)SQL Cache Dependency的方法了。

方法一:使用輪流查詢(xún)機(jī)制(polling-based)

  這種方式實(shí)現(xiàn)機(jī)制是在sql server中插入以ASPNET_SqlCacheNotification_Trigger開(kāi)頭的一個(gè)特殊的表和5個(gè)存儲(chǔ)過(guò)程,當(dāng)被監(jiān)測(cè)的表數(shù)據(jù)發(fā)生改變時(shí),則一個(gè)名為ASPNET_SqlCacheTablesForChangeNotification的表被更新,而ASP.NET程序會(huì)根據(jù)用戶(hù)設(shè)置的間隔時(shí)間每隔一定時(shí)間檢查一下數(shù)據(jù)庫(kù)內(nèi)容是否更新,如果更新,則將緩存中的數(shù)據(jù)進(jìn)行跟新。

  使用起來(lái)就很簡(jiǎn)單了,可以在頁(yè)面頭部的OutputCache指令中設(shè)置,會(huì)社DataSource空間中進(jìn)行設(shè)置,設(shè)置格式為:“數(shù)據(jù)庫(kù)名:表名”.里面的表名即是需要監(jiān)測(cè)是否改變的表名,示例如下:

# <%@ OutputCache Duration="30" VaryByParam="none" 
SqlDependency
="DatabaseName:tableName" %>

NET技術(shù)ASP.NET緩存初探 使用得當(dāng)是關(guān)鍵,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 苏晓电视剧叫什么名字的| www.douyin.com官网| 邯郸恋家网| footjob videos| 许凯个人简历资料| 爱欲1990未删减版播放| 误杀1演员表| 行则将至上一句| 韩国车震电影| 床上视频网站| 林栋浦| 陈宝莲徐锦江夜半2普通话| 胸肌图片| 影库影片| 电影《皮埃里诺》免费观看| 夏日福星 电影| 最火图片| 钉子电影电视剧| abo血型鉴定实验报告| 爽文视频| 时来运转电影| 重生2003| 在线观看亚洲免费视频| 韦伦| 浙江卫视节目表(全部)| 神出鬼没电影| 广告设计培训速成班| 大器晚成第三季| 小组介绍| 阀门图例| 夜魔3绝杀电影| 服务群众方面整改成效| 百字明咒注音全文读诵| 日本电影家庭教师| 相声剧本(适合学生)| 九号所有车型图片| 沉默的较量| artist什么意思| lanarhoades在线av| 社会好全部歌词| 视频一二三|