程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 探索ASP.NET MVC5系列之~~~5.緩存篇(頁面緩存+二級緩存),asp.netmvc5

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

編輯:關於.NET

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


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

匯總: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.頁面緩存:

 

先說最常見的的一種:[OutputCache(Duration = 100)] ,Duration單位是秒

第一次回到了斷點的地方,100秒內任意刷新都不會再執行控制器裡面的A()了

帶參數緩存

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

第一次訪問cache/b?id=1的時候斷點停下了,100s內不會進入斷點了。當id=2的時候又重新進入了斷點。多參數類似,注意一下參數分割是;

 

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

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

2.1絕對過期緩存

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

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

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

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 "表名"

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

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

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

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

 

 

2.配置WebConfig:

<!--數據庫緩存依賴配置 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);

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

數據沒有更新之前:

往死裡刷新都沒有更新

表更新之後:

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

簡單舉個例子:

HttpRuntime.Cache.Add(key, list, new CacheDependency(Request.MapPath("/App_Data/Config.xml")), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, null);

 

改變內容:

  

 課外拓展:http://www.cnblogs.com/knowledgesea/p/3904929.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved