天天看點

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正)

彙總:

http://www.cnblogs.com/dunitian/p/4822808.html#mvc 本章Demo: https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/6.網頁基礎/BMVC5/MVC5Base/Controllers/CacheController.cs 這次來篇放松的,咱們不要老是說安全相關的東西。緩存這東西并不是MVC獨有的,N年前就有了,簡單介紹一下平時項目裡面使用的(Redis,Memcache等下次說) 

1.頁面緩存:
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
先說最常見的的一種:[OutputCache(Duration = 100)] ,Duration機關是秒
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
第一次回到了斷點的地方,100秒内任意重新整理都不會再執行控制器裡面的A()了
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

帶參數緩存

 [OutputCache(Duration = 100, VaryByParam = "id")] [OutputCache(Duration = 100, VaryByParam = "id;name")]

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
第一次通路cache/b?id=1的時候斷點停下了,100s内不會進入斷點了。當id=2的時候又重新進入了斷點。多參數類似,注意一下參數分割是;
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

 ---------------------------------------------------------------------------------------------------

2.二級緩存:(System.Web;System.Web.Caching;)

2.1絕對過期緩存

 HttpRuntime.Cache.Add(key, list, null, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration, CacheItemPriority.Default, null); 

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

2.2相對過期緩存(有點Session的感覺了)

 HttpRuntime.Cache.Add(key, list, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, 10), CacheItemPriority.Default, null);

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

2.3資料庫依賴緩存

1.啟動一下資料庫緩存依賴:管理者身份打開VS開發人員指令(參數詳解:

https://msdn.microsoft.com/zh-cn/library/ms229862

aspnet_regsql -C "data source=xxx;initial catalog=xxx;uid=xxx;password=xxx;" -ed -et -t "表名"

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

沒有裝VS的可以用管理者打開cmd,然後切換到以下目錄:(v4.0.xxx有可能不一樣)

C:\Windows\Microsoft.NET\Framework\v4.0.30319

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

其實可以看到,他的内部實作是通過觸發器來的,是以不見得有多麼高效:

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
2.配置WebConfig:
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
<!--資料庫緩存依賴配置 Start-->
    <caching>
      <!--pollTime,毫秒為機關,意識是每隔10秒檢測下資料庫,檢測表是否有發生變化-->
      <sqlCacheDependency pollTime="10000">
        <databases>
          <add name="MySQLCacheDB" connectionStringName="cacheConn"/>
        </databases>
      </sqlCacheDependency>
    </caching>
<!--資料庫緩存依賴配置 End-->
      

Code:HttpRuntime.Cache.Add(key, list, new SqlCacheDependency("SQLCacheDB", "SeoTKD"), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, null);

應用場景一般都是緩存資料庫依賴表裡面的資料,當裡面資料發生改變則緩存失效,這樣就可以及時自動更新緩存了(我這邊隻是做個示範)

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
資料沒有更新之前:
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
往死裡重新整理都沒有更新
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
表更新之後:
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

其他:檔案(夾)依賴緩存,一般也就一些網站固定配置用它,一般是根據檔案最後一次修改時間來判斷時間差

簡單舉個例子:

探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
HttpRuntime.Cache.Add(key, list, new CacheDependency(Request.MapPath("/App_Data/Config.xml")), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
改變内容:
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)
探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存)

 課外拓展:

http://www.cnblogs.com/knowledgesea/p/3904929.html

作者:

毒逆天

出處:

https://www.cnblogs.com/dotnetcrazy

打賞:

18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z

本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!