其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正)
汇总:
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单位是秒![]()
探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存) 第一次回到了断点的地方,100秒内任意刷新都不会再执行控制器里面的A()了![]()
探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存) ![]()
探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存) 带参数缓存
[OutputCache(Duration = 100, VaryByParam = "id")] [OutputCache(Duration = 100, VaryByParam = "id;name")]
第一次访问cache/b?id=1的时候断点停下了,100s内不会进入断点了。当id=2的时候又重新进入了断点。多参数类似,注意一下参数分割是;![]()
探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存) ![]()
探索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
其实可以看到,他的内部实现是通过触发器来的,所以不见得有多么高效:
2.配置WebConfig:![]()
探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存) ![]()
探索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.缓存篇(页面缓存+二级缓存) 其他:文件(夹)依赖缓存,一般也就一些网站固定配置用它,一般是根据文件最后一次修改时间来判断时间差
简单举个例子:
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.缓存篇(页面缓存+二级缓存) ![]()
探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
课外拓展:
http://www.cnblogs.com/knowledgesea/p/3904929.html作者:
毒逆天出处:
https://www.cnblogs.com/dotnetcrazy打赏:
18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z本文版权归作者和博客园共有。欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接!