博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
阅读量:6719 次
发布时间:2019-06-25

本文共 2069 字,大约阅读时间需要 6 分钟。

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正)

汇总:

本章Demo

 

这次来篇放松的,咱们不要老是说安全相关的东西。缓存这东西并不是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开发人员命令(参数详解:)

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:

1
2
3
4
5
6
7
8
9
10
<!--数据库缓存依赖配置 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/dunitian/p/6126820.html,如需转载请自行联系原作者

你可能感兴趣的文章
Android 原始套接字
查看>>
javascript 数组、json连接
查看>>
(寒假集训) 不等数列
查看>>
扫二维码登录实现原理,php版
查看>>
Foundation框架—— 数组 (NSArray NSMutableArray )
查看>>
UIView添加圆角边框
查看>>
简单用静态语言实现动态数组
查看>>
day-5 装饰器 迭代器 生成器
查看>>
Windows Bat脚本之变量延迟(Setlocal enabledelayedexpansion)
查看>>
word文档分别批量修改中文与英文字体大小字号等格式
查看>>
关于randbetween连乘的问题
查看>>
Vs程序自动获取windows7/vista系统管理员权限
查看>>
Protocol Framework - SNMP Tutorial
查看>>
php正则表达式-元字符
查看>>
第十四的周学习进度条
查看>>
Linux之特殊的环境变量IFS以及如何删除带有空格的目录
查看>>
(转)获取手机的IMEI号
查看>>
以太坊linux挖矿应用
查看>>
c#dev tabcontrol 切换页面时注意的问题
查看>>
2015.1.4 判断鼠标点击DataGridView的第几行还是空白处
查看>>