_________________________________________________________________________

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

汇总: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:

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/knowledgesea/p/3904929.html

 ——————————————————————————————————————————————————————————————————
 

ASP.NET MVC中使用OutputCache实现服务器端页面级缓存注意问题

2015年04月26日 11:34:42 Harper 阅读数 4314更多

分类专栏: Asp.net
 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记

1)

输出缓存的msdn介绍:OutputCache

血的教训:先说使用OutputCache实现服务器端页面级缓存注意问题

在ASP.NET MVC中,假如我们想要将某个页面(即某个Action)缓存在服务器端,可以在Action上标上以下特性:

  1. [OutputCache(Duration = 300,Location = OutputCacheLocation.Server)]
  2. [HttpGet]
  3. public ActionResult Index()
  4. {
  5. return View();
  6. }

上面代码的意思是 只允许get请求,并把index缓存在服务器上面300秒

注意问题:

1、Action必须是[HttpGet]。

2、Web.Config中设置<compilation debug="false">,即应用程序的编译条件不能是Debug。【发布后,默认为false,咱们不用处理】

3、页面响应Response中不能有Cookies。就是说,当前action和视图中,不能有写、删cookie的操作。   【都是泪】

2)

既然可以"输出缓存",那么我们在特需的情况下,就有必要清除输出缓存,清除缓存很简单,一句代码: 

HttpResponse.RemoveOutputCacheItem(url);

参数是清除指定url的缓存  比如:清除首页的缓存  HttpResponse.RemoveOutputCacheItem("/home/index"); 就行了

 
 

探索ASP.NET MVC5系列的更多相关文章

  1. 探索ASP.NET MVC5系列之~~~2.视图篇(上)---包含XSS防御和异步分部视图的处理

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  2. 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  3. 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  4. 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  5. 探索ASP.NET MVC5系列之~~~1.基础篇---必须知道的小技能

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#mvc 本章D ...

  6. 探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  7. [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

    目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...

  8. [Asp.net MVC]Asp.net MVC5系列——添加视图

    目录 系列文章 概述 添加视图 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 概述 在这一部分我们添加一个新的控制器HelloWorldController类, ...

  9. [Asp.net MVC]Asp.net MVC5系列——添加模型

    目录 概述 添加模型 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 概述 在本节中我们将追加 ...

随机推荐

  1. notepad++ 设置运行python脚本

    按F5 在输入框中输入: cmd /k python “$(FULL_CURRENT_PATH)” &PAUSE & EXIT python路径必须在环境变量中. 否则需要输入完整的p ...

  2. jmeter+jenkins配置过程

    目录 前置条件 脚本规划 讲解非GUI方式运行脚本 在jenkins里面新建项目 在Jmeter的jtl结果文件转换成html页面 邮件.配置 前置条件 1.jmeter安装好并已配置好环境变量,可正 ...

  3. Nginx 高级配置-https 功能

    Nginx 高级配置-https 功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTTPS工作过程 1>.SSL/TLS SSL(Secure Socket Lay ...

  4. oneinstack——证书更新

    如果你安装好 oneinstack 你的定时任务就会自动添加 "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh ...

  5. RMP和YUM软件安装

    1.卸载RPM包 rpm -e rpm包的名称 2.安装rpm包 rmp -ivh xxx.rpm 3.查询yum服务器是否有需要安装的软件 yum list|grep xxx软件列表 4.yum安装 ...

  6. JDOJ 1140: 完数

    JDOJ 1140: 完数 题目传送门 Description 一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如,6的因子为1.2.3,而6=1+2+3,因此6是&qu ...

  7. serverless 如何调试(三)

    在上篇文章中,我们讲解了如何调用我们的hello-world应用,只需要使用命令: serverless invoke -f hello -l ,但是我们总不可能修改一次代码,就调用一下这个命令吧,或 ...

  8. @Path注解

    最近用到的一个项目,看到Controller控制层.Method方法都是通篇的@Path注解,由于之前并没有使用过该注解,故记此篇. 首先看一下项目中的使用方式: @Path("client ...

  9. org.apache.hadoop.util.Shell demo/例子

    package cn.shell; import java.io.IOException; import org.apache.hadoop.util.Shell; public class Shel ...

  10. ASP.NET Core 简介

    .NET Core 是 .NET Framework 的新一代版本,是微软开发的第一个具有跨平台 ( Windows.Mac OSX .Linux ) 能力的应用程序开发框 ASP.NET Core ...