本文是通过网上&个人总结的

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(二)缓存详细介绍

可以关注本人的公众号,多年经验的原创文章共享给大家。

C# - 缓存OutputCache(一)基础配置的更多相关文章

  1. MVC缓存OutPutCache学习笔记 (一) 参数配置

    OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...

  2. [置顶] MVC输出缓存(OutputCache参数详解)

    1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...

  3. MVC输出缓存(OutputCache参数详解)

    版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...

  4. StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫,请注明原文地址.http://www.cnblogs.com/tdws/p/5815735.html 写在前面 这不是教程,分享而已,也欢迎园友们多 ...

  5. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  6. MVC缓存OutPutCache学习笔记 (二) 缓存及时化VaryByCustom

    <MVC缓存OutPutCache学习笔记 (一) 参数配置> 本篇来介绍如何使用 VaryByCustom参数来实现缓存的及时化.. 根据数据改变来及时使客户端缓存过期并更新.. 首先更 ...

  7. redis基础配置

    特点 redis是高性能的key-value的数据库,其支持数据的持久化,可以将内存中的数据保存在磁盘中,重启时再次加载使用:具有丰富的数据类型支持,例如list, set, zset, hash等: ...

  8. Fedora 28 系统基础配置以及常用软件安装方式

    实验说明: 很多人说Linux很难用,很难上手,其实不然,倘若不玩游戏,其实很多发行版Linux都可以成为主力系统,就比如本章要讲的 Fedora 28.本章会从镜像来源.系统安装.基础配置和常用软件 ...

  9. 【linux配置】Redhat6.5基础配置指南

    Redhat6.5基础配置指南 本文针对鄙人在工作中常用系统配置加以说明,通常公司用于生产和测试的服务器基本上都不能连接外网,需要针对刚刚安装好的系统做一系列的常用配置. 一.常用基础系统配置 1.关 ...

随机推荐

  1. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  2. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  3. .NET Core 首例 Office 开源跨平台组件(NPOI Core)

    前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...

  4. setTimeout 的黑魔法

    setTimeout,前端工程师必定会打交道的一个函数.它看上去非常的简单,朴实.有着一个很不平凡的名字--定时器.让年少的我天真的以为自己可以操纵未来.却不知朴实之中隐含着惊天大密.我还记得我第一次 ...

  5. 移动端IOS点击事件失效解决方案

    解决方案 解决办法有 4 种可供选择: 1 将 click 事件直接绑定到目标元素(即 .target)上 2 将目标元素换成 <a> 或者 button 等可点击的元素 3 将 clic ...

  6. MySQL主从环境下存储过程,函数,触发器,事件的复制情况

    下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...

  7. .NET跨平台之运行与Linux上的Jexus服务器

    谈及.NET跨平台,已经不是什么稀奇的事儿.今天我们就以Jexus服务器的部署为例.简单示范下.在这里,我用VMWare虚拟机来搭建Linux运行环境. Linux,我们选择CentOS7.大家可以前 ...

  8. php批量删除

    php批量删除可以实现多条或者全部数据一起删除 新建php文件 显示数据库中内容: <table width="100%" border="1" cell ...

  9. 【详细教程】论android studio中如何申请百度地图新版Key中SHA1值

    一.写在前面 现在越来越多的API接口要求都要求提供我们的项目SHA1值,开发版目前还要求不高,但是发布版是必定要求的.而目前定位在各大APP中也较为常见,当下主流的百度地图和高德地图都在申请的时候会 ...

  10. STM32F429 LCD程序移植

    STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...