首先來說下緩存的優點:緩存是把數據放在內存中,需要時從內存中取出來(和從硬盤上取相比,從內存中取速度會快很多) 提示了速度
緩存的分類:頁面緩存 數據源緩存(永久 和 有時限的) 依賴項緩存 數據庫依賴緩存
頁面緩存:
實現代碼
他會將整個頁面緩存 然后在管線中第7個事件和第8個事件之間判斷要訪問的頁面是否有緩存 是的話直接返回緩存頁面 結束管線 不用走完管線這樣大大的提升了速度
注意點:只能在大部分時候不變的頁面上用到這個,在變化較大的頁面上不能用頁面緩存(尤其是追求準確性的情況下)
數據源緩存:比如將顯示的列表的數據放進cache中
下面是代碼
在什么時候用到:在一個頁面中 這個數據源不常改動 且需要多次從數據庫中提取 其他數據源相對來說需要變化 這時候就用到此緩存
第一次啟動的時候application_start()里存入緩存 以后這個數據源 就直接從緩存中取 (需要改動顯示時后臺將改動相關數據時自動重新寫入緩存)
上面時永久緩存 下面是有時間限制緩存的創建
有時間限制的緩存感覺跟上面的永久緩存相差不大 不過比較適用于數據變換頻率中等的數據源
依賴項緩存:2中依賴項 一種依賴文件,一種是依賴數據庫
依賴文件的通常是依賴配置文件啊 或者依賴xml文件(因為就是從xml文件中讀取的數據)
只有被依賴的文件更改是 緩存才會釋放
如依賴一個xml文件 并從xml文件中取數據 只有xml變更時(增加或者減少) 緩存會釋放 并重新讀取數據放入緩存
這樣看似很方便 你變了我也變 避免了多次無意義的從xml文件取數據,但是要想想為啥系統會知道你變了 肯定在不停的監視 這樣可能更浪費效率
數據庫依賴也是一樣 不停在監視數據庫 直到數據庫改變通知程序 為了方便而浪費了效率
下面是代碼
文件依賴項
數據庫依賴項
數據庫緩存依賴1、數據庫緩存依賴-S服務器名稱 -E集成身份驗證 -ed啟動 -d數據庫名稱 -et指定緩沖依賴的表名 -t表名在vs2010的命令提示符中運行(切換到aspnet_regsql.exe所在的目錄)aspnet_regsql -S . -E -ed -d bjhksj -et -t HKSJ_USERS
aspnet_regiis
緩存依賴禁用該數據庫aspnet_regsql -S . -E -dd -d bjhksj
2、依賴于數據庫的web.config配置<system.web> <caching> <sqlCacheDependency enabled="true"> <databases> <add name="HeimaRegulation"(依賴數據庫的名字) connectionStringName="connectionString"(依賴連接字符串的名字) pollTime="500"/> </databases> </sqlCacheDependency> </caching>3寫入緩存3、 System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("HeimaRegulation", "Branch"); Cache.Insert("list", list, dep, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);
新聞熱點
疑難解答