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.关 ...
随机推荐
- TODO:macOS编译PHP7.1
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
- 在离线环境中发布.NET Core至Windows Server 2008
在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...
- WebGIS项目中利用mysql控制点库进行千万条数据坐标转换时的分表分区优化方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 项目中有1000万条历史案卷,为某地方坐标系数据,我们的真实 ...
- GJM : C#设计模式汇总整理——导航 【原创】
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春
火热的MVVM框架 最近几年最热门的技术之一就是前端技术了,各种前端框架,前端标准和前端设计风格层出不穷,而在众多前端框架中具有MVC,MVVM功能的框架成为耀眼新星,比如GitHub关注度很高的Vu ...
- jquery实现下拉框多选
一.说明 本文是利用EasyUI实现下拉框多选功能,在ComboxTree其原有的基础上对样式进行了改进,样式表已上传demo,代码如下 二.代码 <!DOCTYPE html PUBLIC & ...
- js实现四大经典排序算法
为了方便测试,这里写了一个创建长度为n的随机数组 function createArr(n) { var arr = []; while (n--) { arr.push(~~(Math.random ...
- 二叉树的创建和遍历(C版和java版)
以这颗树为例:#表示空节点前序遍历(根->左->右)为:ABD##E##C#F## 中序遍历(左->根->右)为:#D#B#E#A#C#F# 后序遍历(左->右-> ...
- sublime text 3 + python配置,完整搭建及常用插件安装
四年的时间,一直使用EmEditor编辑器进行Python开发,之前是做面向过程,只需要将一个单独的py文件维护好即可,用着也挺顺手,但是最近在做面向对象的开发,不同的py文件中相互关联较多,感觉单纯 ...
- 四、可空类型Nullable<T>到底是什么鬼
值类型为什么不可以为空 首先我们都知道引用类型默认值都是null,而值类型的默认值都有非null. 为什么引用类型可以为空?因为引用类型变量都是保存一个对象的地址引用(就像一个url对应一个页面),而 ...