C# - 缓存OutputCache(一)基础配置
本文是通过网上&个人总结的
1. 介绍
OutputCache输出缓存是复制ASP.NET页面,保存在内存的机制。这种行为有助于提高性能,通过返回的缓存达到网页及时响应的目的,减少客户机器需要对页面的渲染。如果一个页面需要很多的时间来渲染,缓存可以显著提高性能。尽管如此,OutputCache也有很大的缺点,如果你的网站需要为用户穷自定义的页面或信息,你不能用到缓存页面来达到你的效果。但是OutputCache支持配置选项,避免了这个缺点,它的配置也是非常强大的。
2. 配置地方
1)OutputCache可以配置在webconfig,作为全局的配置。也可以配置在Controller、Action上。
webconfig配置:
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="profile" duration="" enabled="true" varyByParam="*"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
Controller、Action:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MVCFilter.Controllers
{
[OutputCache(Duration = , VaryByParam = "*")]
public class DefaultController : Controller
{
//[OutputCache(Duration = 20, VaryByParam = "*")]
public ActionResult Index(string id)
{
return this.Json(DateTime.Now.ToString("T"),JsonRequestBehavior.AllowGet);
}
}
}
3.详细配置
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None |
ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
VaryByContentEncoding="encodings"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
ProviderName="Provider Name"
%>
| 配置参数 | 说明 |
| Duration | 必填值。 代表页面缓存的秒数。设置这个属性,page或user control建立一个过期策略的HTTP响应对象,并会自动缓存page或user control的输出。 |
| Location | OutputCacheLocation 枚举的值,默认值为Any。 注意:不支持.aspx文件。 |
| Shared | user control分享到不同的页面。默认是false。 注意:不支持.aspx文件。 |
| VaryByControl | 一个以分号分隔的列表字符串用于不同用户控制的输出缓存。 |
| VaryByCustom | 如果值=broswer,则缓存的是浏览器不同的名称和版本信息。如果是自定义的字符串,你要重写GetVaryByCustomString方法。 |
| VaryByHeader | 基于指定的标头中的变动改变缓存条目。 一个以分号分隔的列表用于不同的HTTP头的输出缓存。当这个属性被设置为多个标题,输出缓存包含一个不同请求文档的版本、headers。 设置VaryByHeader属性是允许在所有HTTP 1.1中缓存,不只是ASP.NET。 此属性不支持user controls。 |
| VaryByParam | Request 中变量的名称,这些变量名应该产生单独的缓存条目。"none" 表示没有变动。"*" 可用于为每个不同的变量数组创建新的缓存条目。变量之间用 ";" 进行分隔。 |
| VaryByContentEncoding | 一个以分号分隔的列表字符串用于不同输出缓存。VaryByContentEncodings属性使用theAccept-Encoding头来确定缓存的响应是不同的内容编码服务。关于如何指定接受编码标头的更多信息,参见14.3节的超文本传输协议(HTTP / 1.1规范在W3C网站上。 |
| CacheProfile | 缓存设置的名称与该页面。这是一个可选属性,默认为空字符串(" ")。 |
| NoStore | 一个布尔值来决定是否要防止敏感信息的二级存储。 |
| SqlDependency | 一个字符串值,用来识别一组数据库和表名对一个页面或控制的输出缓存依赖。注意theSqlCacheDependency类监控表在输出缓存依赖于一个数据库,这样,当更新表中的物品,这些物品是使用基于轮询时从缓存中删除。当使用通知(Microsoft SQL Server 2005)CommandNotification价值,最终SqlDependency类用于注册查询通知与SQL Server 2005服务器。 |
| ProviderName | 一个字符串值,表明所使用的自定义输出缓存提供程序。有关更多信息,请参见这个话题和条目的备注部分可扩展与ASP.NET 4(VS 2010和。Scott Guthrie的博客上净4.0系列) |
可以继续查看我的文章
可以关注本人的公众号,多年经验的原创文章共享给大家。

C# - 缓存OutputCache(一)基础配置的更多相关文章
- MVC缓存OutPutCache学习笔记 (一) 参数配置
OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...
- [置顶]
MVC输出缓存(OutputCache参数详解)
1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...
- MVC输出缓存(OutputCache参数详解)
版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...
- StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)
本文版权归博客园和作者吴双本人共同所有,转载和爬虫,请注明原文地址.http://www.cnblogs.com/tdws/p/5815735.html 写在前面 这不是教程,分享而已,也欢迎园友们多 ...
- Hibernate 基础配置及常用功能(三)
本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...
- MVC缓存OutPutCache学习笔记 (二) 缓存及时化VaryByCustom
<MVC缓存OutPutCache学习笔记 (一) 参数配置> 本篇来介绍如何使用 VaryByCustom参数来实现缓存的及时化.. 根据数据改变来及时使客户端缓存过期并更新.. 首先更 ...
- redis基础配置
特点 redis是高性能的key-value的数据库,其支持数据的持久化,可以将内存中的数据保存在磁盘中,重启时再次加载使用:具有丰富的数据类型支持,例如list, set, zset, hash等: ...
- Fedora 28 系统基础配置以及常用软件安装方式
实验说明: 很多人说Linux很难用,很难上手,其实不然,倘若不玩游戏,其实很多发行版Linux都可以成为主力系统,就比如本章要讲的 Fedora 28.本章会从镜像来源.系统安装.基础配置和常用软件 ...
- 【linux配置】Redhat6.5基础配置指南
Redhat6.5基础配置指南 本文针对鄙人在工作中常用系统配置加以说明,通常公司用于生产和测试的服务器基本上都不能连接外网,需要针对刚刚安装好的系统做一系列的常用配置. 一.常用基础系统配置 1.关 ...
随机推荐
- 本人提供微软系.NET技术顾问服务,欢迎企业咨询!
背景: 1:目前微软系.NET技术高端人才缺少. 2:企业很难直接招到高端技术人才. 3:本人提供.NET技术顾问,保障你的产品或项目在正确的技术方向. 技术顾问服务 硬服务项: 1:提供技术.决策. ...
- java head space/ java.lang.OutOfMemoryError: Java heap space内存溢出
上一篇JMX/JConsole调试本地还可以在centos6.5 服务器上进行监控有个问题端口只开放22那么设置的9998端口 你怎么都连不上怎么监控?(如果大神知道还望指点,个人见解) 线上项目出现 ...
- 【.net 深呼吸】跨应用程序域执行程序集
应用程序域,你在网上可以查到它的定义,凡是概念性的东西,大伙儿只需要会搜索就行,内容看了就罢,不用去记忆,更不用去背,“名词解释”是大学考试里面最无聊最没水平的题型. 简单地说,应用程序域让你可以在一 ...
- C#多线程之线程同步篇3
在上一篇C#多线程之线程同步篇2中,我们主要学习了AutoResetEvent构造.ManualResetEventSlim构造和CountdownEvent构造,在这一篇中,我们将学习Barrier ...
- 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)
在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...
- Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...
- Oozie分布式任务的工作流——Spark篇
Spark是现在应用最广泛的分布式计算框架,oozie支持在它的调度中执行spark.在我的日常工作中,一部分工作就是基于oozie维护好每天的spark离线任务,合理的设计工作流并分配适合的参数对于 ...
- nginx启动报错:/usr/local/nginx/sbin/nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
查看依赖库:
- 【微信SEO】公众号也能做排名?
[写于2016年8月] 最近,微信团队发出一则公告,开放公众号运营者一年内更改公众号名一次,这对不少名字起的奇葩名字(包括dkplus)的公众号来说是一件好事. 为什么说是好事呢?公众号名字直接关联到 ...
- 谨慎使用Marker Interface
之所以写这篇文章,源自于组内的一些技术讨论.实际上,Effective Java的Item 37已经详细地讨论了Marker Interface.但是从整个Item的角度来看,其对于Marker In ...